将整数的一部分添加到字节数组中

0 投票
1 回答
6957 浏览
提问于 2025-04-17 23:57
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

撰写回答