Lua 字节码中字符串开始处的三个 null 字符?

我正在阅读关于 Lua 字节码的资料。我知道字符串以其长度开头,然后存储该字符串。然后,在字符串末尾添加一个 null 字符。然而,我遇到了一个问题。它说字符串长度为 124,包括末尾的 null 字符。但是,在字符串长度后面的位置有三个 null 字符。这使得实际字符串长度为 127。

有谁知道这是为什么吗?

谢谢。

点赞
用户107090
用户107090

你发布的字节码以以下方式开始:

\27\76\117\97\81\0\1\4\4\4\8\0\124\0\0\0...

或者以十六进制表示为:

0000000: 1b4c 7561 5100 0104 0404 0800 7c00 0000  .LuaQ.......|...
0000010: 3d70 7269 6e74 2828 2727 292e 6475 6d70  =print(('').dump

字符串的长度不是单个字节,而是四个字节 7c00 0000

通常,用于表示字符串长度的字节数是第一行中偏移量为8的第二个 04

请参见代码中的 luaU_header

2018-02-22 00:37:27