将整数的一部分添加到字节数组中
i = 34
ba = bytearray()
现在我想把 i
的两个最低有效字节加到 ba
里面。我该怎么做呢?
1 个回答
2
你可以使用 int.to_bytes
这个方法把整数转换成二进制的字节表示。传入 signed=True
参数后,你会得到二进制的补码表示:
In [1]: i = 34
In [2]: i.to_bytes(length=2, byteorder='big')
Out[2]: b'\x00"'
然后你可以用这个结果来 extend
一个 bytearray
:
In [3]: ba = bytearray()
In [4]: ba.extend(i.to_bytes(length=2, byteorder='big'))
In [5]: ba
Out[5]: bytearray(b'\x00"')
如果把 'big'
改成 'little'
,那么字节在 bytearray
中的添加顺序就会反过来。
如果你在使用 python2,可以用这样的一个函数:
def to_bytes(num, length, order):
res = bytearray(length)
for i in range(length):
res[i] = num & 0xff
num >>= 8
if num:
raise OverflowError("Number {} doesn't fit into {} bytes.".format(num, length))
if order == 'little':
res.reverse()
return res