Encoding 二进制积分数据压缩

Encoding 二进制积分数据压缩,encoding,integer,bit-manipulation,Encoding,Integer,Bit Manipulation,我需要通过网络传输完整的数据类型,但不想一直传输所有32(或64)位数据-99%的时间数据只适合一个字节-因此看起来需要以某种方式对其进行压缩:例如,如果其他7位表示某个值(0-127),则字节的第一位为0,否则(如果第一个字节为1)需要将这7个字节向左移位,然后读取第二个字节来执行相同的过程 有没有一些常见的方法可以做到这一点?我不想重新发明一个轮子 谢谢。几乎任何数据压缩算法都能很好地压缩这种数据流。使用您的语言提供的任何压缩库。您描述的方案(本质上是base-128编码:每个字节是一个7位

我需要通过网络传输完整的数据类型,但不想一直传输所有32(或64)位数据-99%的时间数据只适合一个字节-因此看起来需要以某种方式对其进行压缩:例如,如果其他7位表示某个值(0-127),则字节的第一位为0,否则(如果第一个字节为1)需要将这7个字节向左移位,然后读取第二个字节来执行相同的过程

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

谢谢。

几乎任何数据压缩算法都能很好地压缩这种数据流。使用您的语言提供的任何压缩库。

您描述的方案(本质上是base-128编码:每个字节是一个7位的base-128“数字”,并使用一个位标志指示它是否是最终数字)是一种常见的方法

例如,请参见:

  • (§7.6)中关于“LEB128”的章节
  • 中的“基数128变量”
  • 中的“可变宽度整数”(在不同的位置使用不同的宽度)
因此截断了我的“Hello”前缀:(