Python:将数组转换为整数

Python:将数组转换为整数,python,arrays,int,Python,Arrays,Int,我想知道Python中是否有办法将数组或列表转换为单个数字: A=[0xaa,0xbb,0xcc] d=0xaabbcc 谢谢你的帮助 使用hex(),map()和join() A = [0xaa, 0xbb, 0xcc] d = reduce(lambda x, y: x*256 + y, A) print hex(d) 或使用lambda: >>> '0x' + ''.join(map(lambda x: hex(x)[2:], A)) '0xaabbcc' 感谢@Jo

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

A=[0xaa,0xbb,0xcc]

d=0xaabbcc

谢谢你的帮助

使用
hex()
map()
join()

A = [0xaa, 0xbb, 0xcc]
d = reduce(lambda x, y: x*256 + y, A)
print hex(d)
或使用
lambda

>>> '0x' + ''.join(map(lambda x: hex(x)[2:], A))
'0xaabbcc'
感谢@John La Rooy指出使用1位数字无法实现此功能。以下对
lambda
版本的修改更好:

>>> B = [0x1, 0x4, 0x3]
>>> '0x' + ''.join(map(lambda x: hex(x)[2:].rjust(2, '0'), B))
'0x010403'

但是在这一点上,最好使用John的答案。

对于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
>A=[0xaa,0xbb,0xcc]
>>> 
>>>def至_十六进制(arr):
...     res=0
...     对于arr中的i:
...         res>0xaabbcc==to_十六进制(A)
真的

我建议您使用
x@Alik您是对的,但前提是原始问题需要处理位而不是字节。请注意,对于
a=1
而言,
a.bit\u length()
给出了1。哦,我没有这样考虑这个问题。我认为OP应该澄清他想做什么。如果A的某些元素<0x10怎么办?
>>> 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