查看python shell上的十六进制字符串

时间:2012-08-08 10:04:09

标签: python string hex

在Scapy中,我获取了几个数据包的前28个字节,并将每个数据包保存为十六进制字符串。每当我想要将这些字符串打印在一起时(它们保存在列表中),就会发生以下情况:

>>> print myStrings[0]
['E\x00\x00W\x00\x00@\x00\x01\x11\xe7-\x8a`t\x86\xd5\x92\xbd\xef0\x1a\xa4\xe8\x00C\xe2k', ['E\x00\x00W\x00\x00@\x00\x01\x11\xe7-\x8a`t\x86\xd5\x92\xbd\xef0\x1a\xa4\xe8\x00C\xe2k']]

但是如果我想分别打印每个字符串:

>>> for p in tmpStrAns:
...     print p[0]
... 
EW@�-�`t�Ւ��0��C�k
E8@�L�`t�Ւ��0��$�L
E8@�L�`t�Ւ��0��$�L

MyStrings是一个列表清单:[[string1, [string2,string3,...], ...]

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

打印列表时,Python会调用list.__str__,在每个项目上调用repr

打印字符串时,Python直接输出字符串。

>>> print "\x11"
�
>>> print ["\x11"]
['\x11']
>>> print repr("\x11")
'\x11'

字符串上的repr方法将不可打印的字符转换为十六进制表示。