i = 34
ba = bytearray()
现在我想将i
的两个最低有效字节添加到ba
。我怎么能这样做?
答案 0 :(得分:2)
您可以使用int.to_bytes
方法将整数转换为二进制表示形式的字节。通过signed=True
您将得到2补码表示:
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'
可以有效地颠倒字节数添加到字节数组的顺序。
如果您使用的是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