如何将字节对象转换为 python 中的十进制或二进制表示形式?
How can I convert bytes object to decimal or binary representation in python?
我想将字节类型的对象转换为 python 3.x 中的二进制表示形式。
例如,我想将字节对象 b'\x11'
转换为二进制表示形式 00010001
(或十进制形式的 17)。
我试过这个:
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
获取主机的本机字节顺序。
import sys
int.from_bytes(b'\x11', byteorder=sys.byteorder) # => 17
bin(int.from_bytes(b'\x11', byteorder=sys.byteorder)) # => '0b10001'
遍历字节对象会得到 8 位整数,您可以轻松地将其格式化为以二进制表示形式输出:
import numpy as np
>>> my_bytes = np.random.bytes(10)
>>> my_bytes
b'_\xd9\xe97\xed\x06\xa82\xe7\xbf'
>>> type(my_bytes)
bytes
>>> my_bytes[0]
95
>>> type(my_bytes[0])
int
>>> for my_byte in my_bytes:
>>> print(f'{my_byte:0>8b}', end=' ')
01011111 11011001 11101001 00110111 11101101 00000110 10101000 00110010 11100111 10111111
十六进制字符串表示的内置函数:
>>> my_bytes.hex(sep=' ')
'5f d9 e9 37 ed 06 a8 32 e7 bf'
我想将字节类型的对象转换为 python 3.x 中的二进制表示形式。
例如,我想将字节对象 b'\x11'
转换为二进制表示形式 00010001
(或十进制形式的 17)。
我试过这个:
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
获取主机的本机字节顺序。
import sys
int.from_bytes(b'\x11', byteorder=sys.byteorder) # => 17
bin(int.from_bytes(b'\x11', byteorder=sys.byteorder)) # => '0b10001'
遍历字节对象会得到 8 位整数,您可以轻松地将其格式化为以二进制表示形式输出:
import numpy as np
>>> my_bytes = np.random.bytes(10)
>>> my_bytes
b'_\xd9\xe97\xed\x06\xa82\xe7\xbf'
>>> type(my_bytes)
bytes
>>> my_bytes[0]
95
>>> type(my_bytes[0])
int
>>> for my_byte in my_bytes:
>>> print(f'{my_byte:0>8b}', end=' ')
01011111 11011001 11101001 00110111 11101101 00000110 10101000 00110010 11100111 10111111
十六进制字符串表示的内置函数:
>>> my_bytes.hex(sep=' ')
'5f d9 e9 37 ed 06 a8 32 e7 bf'