1
heganj 2013-09-24 09:27:54 +08:00
转成16进制、甚至36进制压缩、如果数字没有Long的最大值大,可以考虑writeLong和ReadLong。这两点是起码能想到的
|
2
luikore 2013-09-24 09:35:10 +08:00
11*11=121
先用表 ('0'-'9' => 0-9, ',' => 10) 转换成 0-10 的整数, 然后两字节压成一字节即可: result = b1 * 11 + b2 解压时 b2 = result % 11; b1 = (result - b2) / 11 再查表还原 |
3
webflier 2013-09-24 09:40:26 +08:00 1
|
5
mikawudi 2013-09-24 13:59:04 +08:00
通讯端和服务端都是自己写的话....编码下不就好了.....11种字符用4位做编码,一个byte高4位一个字符,低四位一个字符....完事了,和ascii比正好压缩一半长度
|
7
webflier 2013-09-24 20:30:42 +08:00 via Android
@luikore 是,我没仔细看就回复了。楼主的文本涉及的字符比较少,可用伙夫慢树写一个简单的算法,再结合5楼的方法。。。。。压缩率应该挺好看的
|
9
mikawudi 2013-09-26 17:31:50 +08:00
哈夫曼编码在这没啥用,毕竟表示的位数本来就很短...哈夫曼编码后,间隔符浪费的空间占比都很大....话说才看到2L大哥的编码方式....貌似只要7位的说....比BCD编码强不过'0'->0不大好吧,不然连续的多个0会被识别成串尾
|