Python:将数组转换为整数

时间:2015-06-09 05:46:23

标签: python arrays int

我想知道Python中是否有办法将数组或列表转换为单个数字:

A = [和0xAA,为0xBB,的0xCC]

d = 0xaabbcc

感谢您的帮助!

3 个答案:

答案 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)