Luastring.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 のように null バイトで文字列全体を切り捨てるのではなく、フィールドを 1 バイト文字列ではなく空の文字列にsprintf
折りたたむだけです。%c
この場合、Csprintf
は 0 バイトの後に abc バイトを書き込むことに注意してください。
この場合に予想される動作を説明している Lua ドキュメントには何も見つかりませんでした。Lua の他のほとんどの文字列処理では、0 バイトを有効な文字列として扱うようです。
これは OpenWrt の Lua 5.1.4-8 にあります。
特異性またはバグ?