如何在 python 中将字节对象转换为十进制或二进制表示?
问题描述
我想在 python 3.x 中将字节类型的对象转换为二进制表示.
I wanted to convert an object of type bytes to binary representation in python 3.x.
例如,我想将字节对象 b'x11'
转换为二进制表示的二进制表示 00010001
(或十进制的 17).
For example, I want to convert the bytes object b'x11'
to the binary representation 00010001
in binary (or 17 in decimal).
我试过了:
print(struct.unpack("h","x11"))
但我得到了:
error struct.error: unpack requires a bytes object of length 2
解决方案
从 Python 3.2 开始,您可以使用 int.from_bytes
.
Starting from Python 3.2, you can use int.from_bytes
.
第二个参数,byteorder
,指定字节串的 endianness.它可以是 'big'
或 'little'
.您还可以使用 sys.byteorder
来获取主机的本机字节顺序.
Second argument, byteorder
, specifies endianness of your bytestring. It can be either 'big'
or 'little'
. You can also use sys.byteorder
to get your host machine's native byteorder.
import sys
int.from_bytes(b'x11', byteorder=sys.byteorder) # => 17
bin(int.from_bytes(b'x11', byteorder=sys.byteorder)) # => '0b10001'
相关文章