1

LEB128 是一个“变长整数”,这意味着如果我们有一个内部有很多零的数字,我们可以节省空间。像下面的例子:

对于特定数字12

uint32:00000000 00000000 00000000 00001100

leb128: 00001100

varuint32(带填充的 leb128):10000000 10000000 10000000 00001100(0x80 0x80 0x80 0x0b)

引用自官网:

一个 LEB128 可变长度整数,限制为 N 位(即值 [0, 2^N-1]),最多由可能包含填充 0x80 字节的 ceil(N/7) 个字节表示。

我是不是误会了什么?

4

1 回答 1

0

WebAssembly 二进制文件中的整数编码仍然是可变长度的,它只是强加了一个最大长度。另请参阅规范草案以了解示例。这种限制的原因是它允许通过完全展开解码循环来优化解码器,这可以产生很大的不同。

于 2017-06-27T19:32:43.680 回答