牛骨文教育服务平台(让学习变的简单)
博文笔记

python byte 数组 和 16进制字符串转换

创建时间:2015-04-29 投稿人: 浏览次数:10192

假设:
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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。