【问题标题】:What is this variable-length integer encoding?这个变长整数编​​码是什么?
【发布时间】:2012-12-15 06:56:55
【问题描述】:

我正在记录一种旧的文件格式,但遇到了以下问题。

似乎整数是可变长度编码的,数字 0x7F 编码为单个字节,但 >= 0x80 编码为两个字节。一组整数及其编码对应物的示例:

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

我还没有遇到任何大于0xFFFF 的数字,所以我不能确定它们是否/如何编码。对于我的生活,我无法在这里找出模式。有什么想法吗?

【问题讨论】:

    标签: encoding integer variable-length 8-bit


    【解决方案1】:

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

    输入的最低有效位在前,所以我猜你可以称之为“小端”。

    编辑:参见https://en.wikipedia.org/wiki/Variable-length_quantity(用于 MIDI 和 Google 协议缓冲区)

    【讨论】:

    • 太棒了!谢谢您的帮助;现在看起来这么明显,我没早点看到它,我觉得很傻!
    猜你喜欢
    • 2011-01-22
    • 2017-07-28
    • 1970-01-01
    • 2011-04-03
    • 2011-09-24
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多