我在 python 中有一个相当大的字节数组。在最简单的情况下,字节数组只包含 0 或 1 个值(0x00、0x01),而且数组的长度始终是 8 的倍数。如何将这些“位”打包到另一个字节数组中(它不需要是可变的),以便源索引零进入第一个输出字节的 MSB 等。
例如,如果src = bytearray([1,0,0,0,1,0,0,1, 1,1,1,0,0,0,1,0, 1,1,1,1,1,1,1,1])
期望的输出是b'\x89\xe2\xff'
.
我可以使用 for 循环和位移位以及 or-ing 和连接来做到这一点,但肯定有更快/更好的内置方法来做到这一点。
在后续问题中,我还可能希望源字节数组包含集合 0-3 中的值,并将这 4 个一次打包到输出数组中。有没有办法做到这一点?
一般来说,有没有办法将列表的元素解释为真或假,并将它们一次打包 8 个到一个字节数组中?