Python2.7:如何防止从十六进制到字符串的自动解码

2024-09-25 02:39:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pythonsocket模块,使用我编写的udp客户端。我不喜欢它如何处理我的十六进制文字。示例:

>>> querydns = '\xb9\x1b\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03\x77\x77\x77\x06\x67\x6f\x6f\x67\x6c\x65\x03\x63\x6f\x6d\x00\x00\x01\x00\x01'
>>> querydns
'\xb9\x1b\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01'

>>> replydata
'\xb9\x1b\x81\x80\x00\x01\x00\x06\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\x04@\xe9\xb0j\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\x04@\xe9\xb0i\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\x04@\xe9\xb0\x93\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\x04@\xe9\xb0g\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\x04@\xe9\xb0h\xc0\x0c\x00\x01\x00\x01\x00\x00\x00\xd4\x00\x04@\xe9\xb0c'

注意到它是如何自动将十六进制解码成字符的吗?我只想处理十六进制值,没有@或www。有没有一个简单的方法来停止这种自动解码?在


Tags: x1bx00x04x03x01xe9xc0x0c
2条回答

你不能真的。。。你有几个选择(有点)

import binascii
print binascii.hexlify(querydns)

或者伪造它(保持前导零需要更多的努力)。。。在

^{pr2}$

或者一个组合我想可以

hexy = binascii.hexlify(querydns)
print "".join("\\x%s"%hexy[i:i+2] for i in range(len(hexy)-1))

您可以将其用作“原始”字符串,方法是在字符串前面加上“r”。 python不处理原始字符串,而是按原样处理。在

string = r"example string"

相关问题 更多 >