Lua 是否应该string.format( "%c", value )
等同于string.char( value )
?
当字符值为零时似乎不是。
string.format( "%c", 0 ):len()
返回 0
string.char( 0 ):len()
返回 1
再陌生,
string.format( "%c%s", 0, "abc" ):len()
返回 3 ; 其中 %c 的任何其他非零模 256 值返回 4,因此string.format
不会像 C 那样在空字节处截断整个字符串sprintf
,只是将字段折叠%c
为空字符串而不是单字节字符串。请注意,sprintf
在这种情况下,C 写入零字节后跟 abc 字节。
在这种情况下,我在 Lua 文档中找不到任何描述预期行为的内容。Lua 中的大多数其他字符串处理似乎将零字节视为有效的字符串字符。
这是 OpenWrt 上的 Lua 5.1.4-8。
异能还是错误?