将十六进制值的列表/字符串解压缩为整数

时间:2016-04-20 17:43:46

标签: python python-2.7 parsing hex unpack

我正在尝试在python中取消从十六进制到整数的列表。

例如:

hexValues = '\x90\x82|uj\x82ix'
decodedHex = struct.unpack_from('B', hexValues,0)
print decodedHex

哪个会打印(144,)而没有别的。有什么办法可以遍历这个字符串来获取所有值吗? (请记住,十六进制值的长度比给出的示例长得多。)

1 个答案:

答案 0 :(得分:1)

您可以一次获得所有值:

import struct

hexValues = '\x90\x82|uj\x82ix'
format = '%dB' % len(hexValues)
decodedHex = struct.unpack_from(format, hexValues)
print(decodedHex)  # -> (144, 130, 124, 117, 106, 130, 105, 120)

正如Jon Clements在评论中有用地指出的那样,你真的不需要使用struct模块:

decodedHex = tuple(bytearray(hexValues))
print(decodedHex)  # -> (144, 130, 124, 117, 106, 130, 105, 120)