如何把50个汉字存储在50个字节内?(50分)

  • 主题发起人 主题发起人 新副翁
  • 开始时间 开始时间

新副翁

Unregistered / Unconfirmed
GUEST, unregistred user!
我想到两个解决方法,但不知具体咋实现
1把每个汉字转换为区位码
2把每个汉字转换为ASCII码
 
1 区位码也是两个字节的
2 和1类似。
这两个方法都不行。涉及到有关数据压缩的算法,要在100个字节达到
50%的无损压缩不太可能。
 
其实说实在这个很难做到,
一个汉字的存储是两个字节,
50字节就是25个汉字。
我建议使用加密的方法:我们知道一个汉字是两个字节,而每个字节都是大于128(十进制),变成一个字节后就是用0--255之间的值来代替一个汉字实在很困难,重码可想而知,加密算法太困难。
本人目前也没有试过,也不知是否可行,望多多指教,希望有哪位朋友试下。
呵呵~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
先不说能不能实现,我想问一下——为什么会提出这个问题?能不能将这个问题的所在环
境描述一下?
至于实现,您的数据有没有什么规律性?——比如这50个汉字有相当多的是相同的,或者
您要处理上百个每组50个汉字的字符串,而这些字符串中可能出现的汉字不会超过200个等
等。
 
楼主的解决方法很幼稚嘛,嘻嘻。
有办法,就是储存一个字符串地址
 
呵呵,你不是只有50个汉字把,
array[0..49] of byte;不就OK了,记录索引就OK了
 
好运的话翻译成英文、德文或土著语说不定少于50个字节呢
哈哈
 
to 张无忌,
你用A[0]:= '字'试试
 
>>>array[0..49] of byte;不就OK了,记录索引就OK了
张无忌:
你好,能详细些吗? ^-^ :P
 
const
hz:array[0..49]of widechar=('你','好','好','好','好','好','好','好','好','好','好','好','好','好','好','好','好','好','好'...);//这个是个例子其实也就是字库。
var
hzB:array[0..49]of byte;
hzB[0]:=1;//这样他对应汉字'你'这个是索引表,
 
to: 张无忌
你的这种方法不但没能使50字节存50个汉字,反而增加了50个字节,变成了150个字节。
按照你的字库思路你的字库最多只能存256个汉字。
 
其实说到底就是想一个算法什么的,
将50个字的Ascii码缩成 1 个字节,
但读出来的时候通过其他方法把1个字节变成一个字,
大家所说的不但没有达到目的,反而加了索引的空间耶~~~~
呵呵~~~~~~~~顶吧~~~~~~~~~`````~~~~~~~~~~~~~~~~~~~~~~~~~~
 
这与读书时学的东西好像不一样啊。50个汉字用50个字节,楼主你是内存小还是硬盘太小
啊。
 
如果是50个“汉”字,还有希望!
^_^
 
后退
顶部