私は最近codecs
モジュールで遊んでてきたと私は私はむしろ奇妙見つけるこの動作つまずい:
codecs.encode(b'a', 'hex')
戻りb'61'
。不当な出力()
私の質問は、なぜですか?私は実際にそれがb'61'
を返すとは思わなかった。私はb'\x61'
を期待していた。
前者は長さ2(len(b'61') == 2
)のbytes
オブジェクトですが、後者は長さ1(len(b'\x61') == 1
)のbytes
オブジェクトです。
'hex'
コーデックでエンコードすると、1バイトであると考えられるb'a'
が2バイトになったため、この動作はまったく予想されませんでした。
ASCII文字を16進数でbytes
という表現に変換するにはどうしましたか?私がしたことは:
codecs.decode(hex(ord('a'))[2:], 'hex')
しかし、これはちょっと汚いハックのような感じでした。
https://docs.python.org/3/library/codecs.html#binary-transforms、 "オペランドを1バイトあたり2桁の16進表記に変換する" –
また、あなた自身が指摘しているように、 'b '\ x61''は' b'a'を言うもう一つの方法です。それらは**異なるバイト表現**で書かれた同じバイト列**です。 http://stackoverflow.com/questions/7784148/understanding-repr-function-in-pythonを参照してください。 –
私の悪いです。 RTFMのアドバイスを教えていただきありがとうございます。 –