簡體   English   中英

Python 2.7:如何防止從十六進制自動解碼為字符串

[英]Python 2.7: how to prevent automatic decoding from hex to string

我正在使用python套接字模塊,與我編寫的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。 有沒有簡單的方法可以停止這種自動解碼?

你真的不能...你有幾個選擇

import binascii
print binascii.hexlify(querydns)

或偽造它(保留前導零需要更多的努力)...

print "".join("\\x%s"%(hex(ord(data_byte))[2:]) for data_byte in querydns)

或者我認為可以組合使用

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM