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