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