为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守候你守候我 2021-06-29 13:18:13
问题:我想得到(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=0for i in range(3):    a=bin(a << 8) ^ bin(L[i])print a  但它给出了错误TypeError: unsupported operand type(s) for ^: 'str' and 'str'我该怎么做?
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

没有必要重新发明轮子。如果您看到了我在评论中提供的文档链接,您可以在那里找到这些有用的方法:int.from_bytesint.to_bytes. 我们可以这样使用它们:

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)


查看完整回答
反对 回复 2021-07-06
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

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


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)


查看完整回答
反对 回复 2021-07-06
  • 2 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号