把字节转换成比特?

2024-04-26 12:33:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3.6,我需要将一个整数转换为一个单独的位的列表。例如,如果我有:

def bitstring_to_bytes(s):
    return int(s, 8).to_bytes(8, byteorder='big')

command_binary = format(1, '08b')
bin_to_byte = bitstring_to_bytes(command_binary)

当前输出b'\x00\x00\x00\x00\x00\x00\x00\x01'。在

但是我需要在一个整数列表中(但是以十六进制类型的格式),比如so[0x00, 0x00 ... 0x01],以便将其传递给另一个函数。我被困在这部分了。在


Tags: toformat列表returnbytesbindef整数
1条回答
网友
1楼 · 发布于 2024-04-26 12:33:35

使用cast into bytes类型的简单列表理解如何?在

bin_to_byte = b'\x00\x00\x00\x00\x00\x00\x00\x01'
list_of_bytes = [bytes([i]) for i in bin_to_byte]
print(list_of_bytes)
# [b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x01']

它的作用与list(bin_to_byte)几乎相同,期望它将强制保持bytes,而不是{}。如果您确实需要int的列表,那么是的,list(bin_to_byte)就足够了。在

如您所见,列表中的每一项不是int也不是str,而是bytes

^{pr2}$

因为使用^{}时的问题是它会将你的项转换为字符串,即使它们是十六进制形式,例如

bin_to_byte = b'\x00\x00\x00\x00\x00\x00\x00\x01'
list_of_hex = list(map(hex, (bin_to_byte)))
print(list_of_hex)
# ['0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x1']
print(isinstance(list_of_hex[0], str))
# True

相关问题 更多 >