27

次の int 値に対応する必要がある Python の整数リストがあります (16 進バイト値に変更できます)。

[10, 145, 140, 188, 212, 198, 210, 25, 152, 20, 120, 15, 49, 113, 33, 220, 124, 67, 174, 224, 220, 241, 241]

ただし、そのリストを (bytearray(nameOfList) を使用して) bytearray に変換すると、次の出力が得られます。

bytearray(b'\n\x91\x8c\xbc\xd4\xc6\xd2\x19\x98\x14x\x0f1q!\xdc|C\xae\xe0\xdc\xf1\xf1')

印刷方法に関係なく、このバイト配列から正しい値を引き出すことができますが、バイト配列の出力はバイト配列の 16 進値に対応するべきではありませんか? (つまり、ほとんどの場合、\x0f の後まで 16 進数の値をたどるように見えますが、意味不明なメッセージを出力し始めます...)

4

3 に答える 3

39
>>> x = bytearray(b'\n\x91\x8c\xbc\xd4\xc6\xd2\x19\x98\x14x\x0f1q!\xdc|C\xae\xe0
\xdc\xf1\xf1')
>>> import binascii
>>> print binascii.hexlify(x)
0a918cbcd4c6d2199814780f317121dc7c43aee0dcf1f1

すべてを 16 進文字列として出力する場合は binascii を使用します。

于 2013-06-13T17:55:06.693 に答える
12

私にはうまく見えます。可能な限りバイトをASCII文字としてレンダリングするだけです。15= の後\x0fには、49='1' や 113='q' などがあります。

http://asciitable.comを参照してください。

于 2013-06-13T17:52:24.657 に答える