我想将字节类型的对象转换为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'