1

我正在使用 dpkt python 模块来解析 pcap 文件。我对数据包的研究足够深入,一些数据被表示为字节流。我可以很容易地从常规字节字符串转换,但是一些字节字符串显示为:

\t\x01\x1c\x88

第一个值应该是 09,但由于某种原因,它使用了转义的制表符。(标签的十六进制代码是 09)。

它也对其他流中的其他角色执行此操作。

更多示例输出:

\x10\x00@\x00\

\x05q\x00\x00\

\x069\x9c\n\x00

所以我的问题是:我可以在没有这些额外字符的情况下将此字节流转换为一个吗?

或者,我将如何将 '\t' 之类的内容转换为十六进制以返回 '09'?

更新:

事实证明,我正在使用一个函数创建要转换的字符串,该函数将返回 \t011c88 代替第一个流。

不理会它并使用 stream.encode("hex") 工作

4

1 回答 1

1

默认情况下,该repr函数会转义所有不可打印的字符,如您所见。

要获得仅十六进制表示,请使用

string.encode("hex")

注意:原始字节流是正确的,您应该只转换为十六进制以用于查看目的而不是完整性目的。它只是以一种奇怪的方式显示数据。

于 2015-08-19T14:22:15.473 回答