2011-06-13 61 views
3

我需要通过网络传输积分数据类型,但不希望一直传输全部32位(或64位) - 数据仅占用一个字节99%的时间 - 因此它看起来像需要以某种方式进行压缩:例如,如果其他7位仅表示一些值(0-127),则一个字节的第一位为0,否则(如果第一个字节为1),则需要将这7个字节左移并读取第二个字节做同样的过程。二进制积分数据压缩

有没有一些常见的方法来做到这一点?我不想重新发明轮子...

谢谢。

+0

SO截断了我的“Hello”前缀:( – Slav 2011-06-13 20:32:21

回答

3

您描述的方案(其实质上是一个基128编码:每个字节是一个7位基地128“数字”和一个位标志来指示它是否是最后一位数字)这是一个常见的方式。

例如,参见:

0

只要约任何数据压缩算法将能够非常好地压缩这种类型的数据流。使用您的语言提供的任何压缩库。

+0

呃,base-128可能更适合这里... – SamB 2015-01-25 01:36:47