在python中将int转换为特定大小的字节
我试图在python中创建一个位数组,它是固定宽度的两个二进制数 例如在python中将int转换为特定大小的字节,python,bit-manipulation,Python,Bit Manipulation,我试图在python中创建一个位数组,它是固定宽度的两个二进制数 例如 [11,90]--->000011011010 我尝试的内容/遇到的问题: bin(11)=>0b1010(这不是我需要的固定宽度) 使用format“{0:11b}”进行字符串操作。format(8)(这很有效,但如果可以的话,我希望避免转换为字符串并返回。基本上执行移位和添加操作似乎需要很大的开销) 您可以使用: 如果您想要领先的0,请执行以下操作: '{:016b}'.format(int.from_bytes(str
[11,90]--->000011011010
我尝试的内容/遇到的问题:
bin(11)
=>0b1010(这不是我需要的固定宽度)“{0:11b}”进行字符串操作。format(8)
(这很有效,但如果可以的话,我希望避免转换为字符串并返回。基本上执行移位和添加操作似乎需要很大的开销)'{:016b}'.format(int.from_bytes(struct.pack('>bb', 11, 90), byteorder='big'))
您可以使用:
如果您想要领先的0,请执行以下操作:
'{:016b}'.format(int.from_bytes(struct.pack('>bb', 11, 90), byteorder='big'))
猜测你想做什么,因为你对你的问题不是很详细,你可以使用
bin(x)[2:]
删除前两个字符,然后用str.zfill(length)
填充零,然后连接两个数字,如下所示:
print(bin(11)[2:].zfill(8) + bin(90)[2:].zfill(8))
将打印:
000010101011010
猜测你想做什么,因为你对你的问题不是很详细,你可以使用bin(x)[2://code>删除前两个字符,然后用str.zfill(length)
零填充它,然后连接两个数字,如下所示:
print(bin(11)[2:].zfill(8) + bin(90)[2:].zfill(8))
将打印:000011010
Python不支持位数组。或者你是什么意思?你是如何从11
和90
获取0B00001011010
的?bin
返回一个字符串。我不会担心开销,除非你真的看到它会导致问题,这不太重要。如果您担心,那么您应该建立自己的列表
True
和False
,它们尽可能接近位数组<代码>'{:0>8b}{:0>8b}'。格式(x,y)应为sufficient@Galen我现在看到了。二进制中的11是1011
,00001011
是数字的前半部分,90是1011010
,01011010
是数字的后半部分。因此,似乎他们想要将列表中的数字转换为二进制,将0添加到前面,直到每个数字都有8位长,然后将它们附加在一起。或者你是什么意思?你是如何从11
和90
获取0B00001011010
的?bin
返回一个字符串。我不会担心开销,除非你真的看到它会导致问题,这不太重要。如果您担心,那么您应该建立自己的列表
True和False
,它们尽可能接近位数组<代码>'{:0>8b}{:0>8b}'。格式(x,y)应为sufficient@Galen我现在看到了。二进制中的11是1011
,00001011
是数字的前半部分,90是1011010
,01011010
是数字的后半部分。因此,似乎他们想将列表中的数字转换为二进制,将0添加到前面,直到每个数字都有8位长,然后将它们附加在一起