我编写了一个使用原始字节的程序(我不知道这是否是正确的名字!)但是用户会将数据作为普通字符串输入。
如何转换它们?
我尝试过一个方法,但它返回一个长度为0的字符串!
这是起始字符串:
5A05705DC25CA15123C8E4750B80D0A9
这是我需要的结果:
\x5A\x05\x70\x5D\xC2\x5C\xA1\x51\x23\xC8\xE4\x75\x0B\x80\xD0\xA9
这是我写的方法:
def convertStringToByte(string):
byte_char = "\\x"
n=2
result = ""
bytesList = [string[i:i+n] for i in range(0, len(string), n)]
for i in range(0, len(bytesList)):
bytesList[i] = byte_char + bytesList[i]
return result
答案 0 :(得分:9)
import binascii
binary = binascii.unhexlify(text)
同样的模块也有binascii.hexlify()
,以反映操作。
演示:
>>> import binascii
>>> binary = '\x5A\x05\x70\x5D\xC2\x5C\xA1\x51\x23\xC8\xE4\x75\x0B\x80\xD0\xA9'
>>> text = '5A05705DC25CA15123C8E4750B80D0A9'
>>> binary == binascii.unhexlify(text)
True
>>> text == binascii.hexlify(binary).upper()
True
hexlify()
操作生成小写十六进制,但可以通过.upper()
调用轻松修复。
答案 1 :(得分:4)
您必须从5A
(表示十六进制数字的字符串)到0x5A
或90
(整数)并将它们输入chr()
。您可以使用int('0x5A', 16)
进行首次转化,这样您就可以获得类似
chr(int('0x5A', 16))