我想知道Python中是否有办法将数组或列表转换为单个数字:
A = [和0xAA,为0xBB,的0xCC]
d = 0xaabbcc
感谢您的帮助!
答案 0 :(得分:5)
对于Python3 +,int
有一个方法用于此
>>> A=[0xaa, 0xbb, 0xcc]
>>> hex(int.from_bytes(A, byteorder="big"))
'0xaabbcc'
>>> 0xaabbcc == int.from_bytes(A, byteorder="big")
True
对于Python2,最好编写一个小函数
>>> A = [0xaa, 0xbb, 0xcc]
>>>
>>> def to_hex(arr):
... res = 0
... for i in arr:
... res <<= 8
... res += i
... return res
...
>>> 0xaabbcc == to_hex(A)
True
答案 1 :(得分:3)
使用hex()
,map()
和join()
。
>>> '0x' + ''.join(map(hex, A)).replace('0x', '')
'0xaabbcc'
或lambda
:
>>> '0x' + ''.join(map(lambda x: hex(x)[2:], A))
'0xaabbcc'
感谢@John La Rooy指出这个数字失败了。 lambda
版本的以下修改更好:
>>> B = [0x1, 0x4, 0x3]
>>> '0x' + ''.join(map(lambda x: hex(x)[2:].rjust(2, '0'), B))
'0x010403'
但在那时,最好使用John的答案。
答案 2 :(得分:2)
A = [0xaa, 0xbb, 0xcc]
d = reduce(lambda x, y: x*256 + y, A)
print hex(d)