当前位置: 代码迷 >> python >> 如何将字节元组转换为整数并返回?
  详细解决方案

如何将字节元组转换为整数并返回?

热度:78   发布时间:2023-07-16 09:52:35.0

问题:我想得到

(7,5,3) => 000001110000010100000011 => 460035  
  also the converse, i.e.,   
460035 => 000001110000010100000011 => (7,5,3)

这是我尝试过的程序:

L=(7,5,3) # here L may vary each time.
a=0
for i in range(3):
    a=bin(a << 8) ^ bin(L[i])
print a  

但是它给出了错误TypeError: unsupported operand type(s) for ^: 'str' and 'str'
我怎样才能做到这一点?

无需重新发明轮子。 如果您看到了我在注释中提供的文档链接,则可以在其中找到这些有用的方法: 和 。 我们可以这样使用它们:

input = (7, 5, 3)
result = int.from_bytes(input, byteorder='big')
print(result)
>>> 460035

print(tuple(result.to_bytes(3, byteorder='big')))
>>> (7, 5, 3)

您应该对数字而不是转换后的字符串执行位操作:

L=(7,5,3)
a=0
for i in L:
    a <<= 8
    a |= i
print(bin(a), a)

输出:

0b1110000010100000011 460035

逆转:

a = 460035
L = []
while True:
    L.append(a & 0xff)
    a >>= 8
    if not a:
        break
L = tuple(L[::-1])
print(L)

输出:

(7, 5, 3)
  相关解决方案