我想将字节类型的对象转换为python 3.x中的二进制表示形式。

例如,我想将字节对象b'\x11'转换为二进制(或十进制的17)的二进制表示形式00010001

我尝试了这个:

print(struct.unpack("h","\x11"))

但是我得到了:
error struct.error: unpack requires a bytes object of length 2

最佳答案

从Python 3.2开始,您可以使用 int.from_bytes

第二个参数byteorder指定字节串的endianness。它可以是'big''little'。您还可以使用sys.byteorder获取主机的 native 字节顺序。

import sys
int.from_bytes(b'\x11', byteorder=sys.byteorder)  # => 17
bin(int.from_bytes(b'\x11', byteorder=sys.byteorder))  # => '0b10001'

10-08 05:36