0

在 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,...], ...]:)

这里发生了什么事?

4

1 回答 1

2

打印列表时,Python 调用list.__str__,它调用repr它的每个项目。

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

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

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

于 2012-08-08T10:11:08.963 回答