Lua 字节码中字符串开头后的三个空字符?

Three null characters after start of string in Lua bytecode?

我正在阅读 Lua 字节码。我知道字符串以它的长度开头,然后存储字符串。然后字符串以空字符结尾。但是,我有一个问题。它表示字符串长度为 124,包括末尾的空字符。但是,字符串之前(长度之后)有三个空字符。这使得字符串的实际长度为 127.

有人知道为什么会这样吗?

谢谢。

您发布的字节码以

开头
7[=10=][=10=]4[=10=][=10=][=10=]...

或十六进制

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

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

一般情况下,用来表示字符串长度的字节数是第一行第二个04,偏移量8处

见代码luaU_header