Lua string.format("%c", value)
應該等於string.char(value)
?Lua string.format%c與string.char
字符值爲零時似乎不是。
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
字段摺疊爲空字符串而不是單字節字符串。請注意,在這種情況下,C sprintf
寫入零字節,然後寫入abc字節。
在這種情況下,我無法在描述預期行爲的Lua文檔中找到任何內容。 Lua中的大多數其他字符串處理似乎將零字節視爲有效的字符串字符。
這是關於OpenWrt的Lua 5.1.4-8。
Idiosyncracy or bug?
什麼'(」 %C%S「):格式(0, 」ABC「): sub(1,1)'give? – Eric