字串简化表示我现在有一个字串:Eiio4567-2666660000AN0000 (源)共25位,范围20~25个字串都有可能我想用小
字串简化表示
我现在有一个字串:"Eiio4567-2666660000AN0000" (源)共25位,范围20~25个字串都有可能
我想用小于等于16位的字串来表示,请教有什么方法吗,想压短一点. (目标)
另外通过压缩后的16位字串,要求也能解析中源字串来,即可互译.
[解决办法]
如果数据很密集根本没法用 16 位 压缩,总状态数大于 2^16,根本不可能了
得看 20-25 位的数据是否稀疏
[解决办法]
这些字符串没有任何共性特征,怎么压缩
[解决办法]
没玩过压缩。略略计算下,
假设字符串只有 [a~zA~Z],[0~9],[-],
那么 26 * 2 + 10 + 1 = 63。
最少需要6位(char = 8位)才可以表示,
就有
25 * 6 = 150 //25个字符需要 150位
16 * 8 = 128 // 而16个字符的串只有 128 位 , 空间不足。
//但是把 字母与 数字分开来表示,应该有可能压缩小于16个字符 (饭后试试??)
[解决办法]
"Eiio4567-2666660000AN0000"
------
可压缩地方就是:
ii
4567
66666
0000
0000
压到16位是比较难。。。
[解决办法]
看看压缩算法吧,压缩算法按位来的,把这些表示成二进制,很多0,很多1都埃在一起,这种字符形式是最好压缩的方式之一。
