将字节转换为整数?

新手上路,请多包涵

我目前正在研究加密/解密程序,我需要能够将字节转换为整数。我知道:

 bytes([3]) = b'\x03'

但是我不知道如何做相反的事情。我做错了什么?

原文由 Vladimir Shevyakov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 473
2 个回答

假设你至少使用 3.2,有一个 内置的

int.from_bytes ( bytes , byteorder , *, signed=False )

参数 bytes 必须是类字节对象或可迭代生成字节。

byteorder 参数确定用于表示整数的字节顺序。如果 byteorder"big" ,则最高有效字节位于字节数组的开头。如果 byteorder"little" ,则最高有效字节位于字节数组的末尾。要请求主机系统的本机字节顺序,请使用 sys.byteorder 作为字节顺序值。

signed 参数表示是否使用二进制补码表示整数。

 ## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024

原文由 Peter DeGlopper 发布,翻译遵循 CC BY-SA 4.0 许可协议

字节列表是可订阅的(至少在 Python 3.6 中是这样)。这样您就可以单独检索每个字节的十进制值。

 >>> intlist = [64, 4, 26, 163, 255]
>>> bytelist = bytes(intlist)       # b'@\x04\x1a\xa3\xff'

>>> for b in bytelist:
...    print(b)                     # 64  4  26  163  255

>>> [b for b in bytelist]           # [64, 4, 26, 163, 255]

>>> bytelist[2]                     # 26

原文由 Ronald 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题