Encoding 什么是可变长度整数编码?

Encoding 什么是可变长度整数编码?,encoding,integer,variable-length,8-bit,Encoding,Integer,Variable Length,8 Bit,我正在记录一个旧的文件格式,并在下面的问题上难倒了自己 似乎整数是可变长度编码的,数字=0x80用两个字节编码。整数及其编码对应项的示例集: 0x390编码为0x9007 0x150编码为0xD002 0x82编码为0x8201 0x89编码为0x8901 我还没有遇到任何大于0xFFFF的数字,因此我无法确定它们是否/如何编码。就我个人而言,我无法在这里找到模式。有什么想法吗?乍一看,这些数字被分成7位数据块,每个数据块都被编码为输出字节的7个最低有效位,而最高有效位则表示在这一位之后是否

我正在记录一个旧的文件格式,并在下面的问题上难倒了自己

似乎整数是可变长度编码的,数字=
0x80
用两个字节编码。整数及其编码对应项的示例集:

  • 0x390
    编码为
    0x9007
  • 0x150
    编码为
    0xD002
  • 0x82
    编码为
    0x8201
  • 0x89
    编码为
    0x8901

我还没有遇到任何大于
0xFFFF
的数字,因此我无法确定它们是否/如何编码。就我个人而言,我无法在这里找到模式。有什么想法吗?

乍一看,这些数字被分成7位数据块,每个数据块都被编码为输出字节的7个最低有效位,而最高有效位则表示在这一位之后是否还有更多字节(即编码整数的最后一个字节的MSB为0)

输入的最低有效位排在第一位,所以我想你可以称之为“小尾端”


编辑:请参见(这在MIDI和Google协议缓冲区中使用)

Brilliant!谢谢你的帮助;现在它看起来如此明显,我觉得没有早点看到它很傻!