像这种总长度比较小的数据,不太容易使用常见的压缩算法得到好的压缩效果,但是根据你的特殊情况,可以考虑一些定制的方法。首先,我把你的数据范围理解为任意个值在[0,16]或[0,32]之间的整型值,那么,设值范围为[0,N],原文长度为M,则以下方法可以达到压缩后长度为ceiling((N+1+M)/8)字节。其中ceiling是向上取整。压缩方法:首先,统计原文中每个数值的出现次数;然后,从最小值开始,按位进行编码。若该未出现,编码段为空,否则编码段与该值出现次数等长的‘1’的序列。这里的‘1’是二进制的1,占1位;每编码完一个值,在输出序列里加入一个‘0’进行分隔。以你举的16{14,7,8,6,4,2,2,7,2,6,10,7... |