文字列をヌル文字 ("\x00") で埋めたいと思っていました。私はこれを行う方法をたくさん知っているので、代替案で答えないでください. 私が知りたいのは、Python のstring.format()
関数がヌルでのパディングを許可しないのはなぜですか?
テストケース:
>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
これは、16 進エスケープ文字が一般的に機能することを示しています。
>>> "{0:\x00<10}".format("bbb")
'bbb '
ただし、「\x00」はスペース (「\x20」) に変換されます。
>>> "{0:{1}<10}".format("bbb","\x00")
'bbb '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb '
それを行う他のいくつかの方法を試してみてください。
>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
これは機能しますが、使用しませんstring.format
>>> spaces = "{0: <10}".format("bbb")
>>> nulls = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
chr(0x20)
Python は、ヌル ( ) の代わりにスペース ( ) を明らかに置き換えていますchr(0x00)
。