将一部分整数添加到bytearray

时间:2014-03-26 10:09:21

标签: python integer bytearray

i = 34
ba = bytearray()

现在我想将i的两个最低有效字节添加到ba。我怎么能这样做?

1 个答案:

答案 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