在python中将int转换为特定大小的字节

在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

我试图在python中创建一个位数组,它是固定宽度的两个二进制数

例如

[11,90]--->000011011010

我尝试的内容/遇到的问题:

  • bin(11)
    =>0b1010(这不是我需要的固定宽度)

  • 使用format
    “{0:11b}”进行字符串操作。format(8)
    (这很有效,但如果可以的话,我希望避免转换为字符串并返回。基本上执行移位和添加操作似乎需要很大的开销)

  • 您可以使用:

    如果您想要领先的0,请执行以下操作:

    '{: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位长,然后将它们附加在一起