python byte 数组 和 16进制字符串转换
假设:
hex_string = “deadbeef”
转换成字符串格式
>>> hex_data = hex_string.decode("hex")
>>> hex_data
"xdexadxbexef"
转换成字节数组
>>> import array
>>> array.array("B", hex_data)
array.array("B", [0xDE, 0xAD, 0xBE, 0xEF])
转换成字节列表
>>> map(ord, hex_data)
[0xDE, 0xAD, 0xBE, 0xEF]
如果是2.6以后版本:
>>> bytearray(hex_data)
bytearray(b"xdexadxbexef")
然而有可能出现无法打印的字符串,例如:x12x45x00AB
这种情况下:不要用.decode(“hex”)
下面的将返回bytearray,并在python3中正常工作
bytearray.fromhex(“de ad be ef 00”)
使用binascii
import binascii
a="45222e"
s=binascii.unhexlify(a)
b=[ord(x) for x in s]
直接编写程序
data = "fef0babe"
bits = ""
for x in xrange(0, len(data), 2)
bits += chr(int(data[x:x+2], 16))
还原byte型字符串
binascii.b2a_hex(hex_data)
出自:stackoverflow
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。