【问题标题】:Add part of an integer to bytearray将整数的一部分添加到 bytearray
【发布时间】:2014-03-26 10:09:20
【问题描述】:
i = 34
ba = bytearray()

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

【问题讨论】:

  • 您的问题缺少基本信息:您想使用什么字节表示数字? 2补? 1-补?符号+大小?尾数+指数?还是您可以定义的其他无限数字?
  • @Bakuriu,我想照原样从整数中复制两个最低字节。换句话说,我想将整数“切片”成两部分,每部分两个字节,然后将第一个部分复制到字节数组中。

标签: python integer bytearray


【解决方案1】:

您可以使用int.to_bytes 方法将整数转换为其二进制表示形式为字节。传递 signed=True 你会得到 2-complement 表示:

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

【讨论】:

  • 完美答案!谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 2020-09-13
  • 2023-03-11
  • 2016-11-11
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多