在 python 的字节数组中用 8 位表示 int

Representing int with 8 bits in python's byte array

我需要一个长度为 50 的缓冲区(字节数组列表)(我网络中的节点,无关紧要),但我需要恰好 8 位来表示字节数组,我现在拥有的是:

buffer = []
for position, nodeID in enumerate(range(128,128+50)):
 print(bin(int(bytearray([nodeID]).hex(), base=16)).lstrip('0b'))
 buffer.append(bytearray([nodeID]))
 print(buffer[-1])
print(buffer)

我现在正在做的是将最左边的位置设置为 1,这样我就得到了 8 位,我需要这种布局来进行特定的解码过程。我的问题是:是否有更有效的方法来创建这样的列表? IE: 50 个字节数组的列表,每个字节数组设置为索引 +1 (node.id)。 我想省略开头的那些,但仍然希望数据以正好 8 位的形式表示。

输出:

10000000 bytearray(b'\x80') 10000001 bytearray(b'\x81') 10000010 bytearray(b'\x82') 10000011 bytearray(b'\x83') 10000100 bytearray(b'\x84') 10000101 bytearray(b'\x85') 10000110 bytearray(b'\x86') 10000111 bytearray(b'\x87') 10001000 bytearray(b'\x88') 10001001 bytearray(b'\x89') 10001010 bytearray(b'\x8a') 10001011 bytearray(b'\x8b') 10001100 bytearray(b'\x8c') 10001101 bytearray(b'\x8d') 10001110 bytearray(b'\x8e') 10001111 bytearray(b'\x8f') 10010000 bytearray(b'\x90') 10010001 bytearray(b'\x91') 10010010 bytearray(b'\x92') 10010011 bytearray(b'\x93') 10010100 bytearray(b'\x94') 10010101 bytearray(b'\x95') 10010110 bytearray(b'\x96') 10010111 bytearray(b'\x97') 10011000 bytearray(b'\x98') 10011001 bytearray(b'\x99') 10011010 bytearray(b'\x9a') 10011011 bytearray(b'\x9b') 10011100 bytearray(b'\x9c') 10011101 bytearray(b'\x9d') 10011110 bytearray(b'\x9e') 10011111 bytearray(b'\x9f') 10100000 bytearray(b'\xa0') 10100001 bytearray(b'\xa1') 10100010 bytearray(b'\xa2') 10100011 bytearray(b'\xa3') 10100100 bytearray(b'\xa4') 10100101 bytearray(b'\xa5') 10100110 bytearray(b'\xa6') 10100111 bytearray(b'\xa7') 10101000 bytearray(b'\xa8') 10101001 bytearray(b'\xa9') 10101010 bytearray(b'\xaa') 10101011 bytearray(b'\xab') 10101100 bytearray(b'\xac') 10101101 bytearray(b'\xad') 10101110 bytearray(b'\xae') 10101111 bytearray(b'\xaf') 10110000 bytearray(b'\xb0') 10110001

假设您想要一个长度为 50 的列表,其中包含一个值为索引 + 0x80 的单字节字节数组,这样就可以了:

l_of_ba = [bytearray([i + 0x80]) for i in range(50)]