Python:将数组转换为整数
我想知道Python中是否有办法将数组或列表转换为单个数字: A=[0xaa,0xbb,0xcc] d=0xaabbcc 谢谢你的帮助 使用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
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