LEB128是一个“可变长度整数”,这意味着如果我们有一个内部有很多零的数字,我们就可以节省空间。如下图所示:
对于特定数字 12 :
uint32:00000000 00000000 00000000 00001100
leb128:00001100
varuint32(leb128 with paddings):10000000 10000000 10000000 00001100(0x80 0x80 0x80 0x0b)
引自官方网站:
LEB128可变长度整数,限制为N位(即值[0,2 ^ N-1]),由最多ceil(N / 7)字节表示,可包含填充0x80字节。
我误解了什么吗?
答案 0 :(得分:0)
WebAssembly二进制文件中的整数编码仍然是可变长度的,它只是强加了一个最大长度。有关说明示例,另请参阅draft spec。这种限制的原因在于它允许通过完全展开解码循环来优化解码器,这可以产生很大的不同。