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。
我正在阅读 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。