您的位置:首页 > 编程语言 > Python开发

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

2015-04-29 18:29 691 查看
假设:

hex_string = “deadbeef”

转换成字符串格式

>>> hex_data = hex_string.decode("hex")
>>> hex_data
"\xde\xad\xbe\xef"


转换成字节数组

>>> 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'\xde\xad\xbe\xef')


然而有可能出现无法打印的字符串,例如:\x12\x45\x00AB

这种情况下:不要用.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: