Python 将整数的一部分添加到bytearray
现在我想将Python 将整数的一部分添加到bytearray,python,integer,bytearray,Python,Integer,Bytearray,现在我想将I的两个最低有效字节添加到ba。如何才能做到这一点?您可以使用该方法将整数转换为二进制字节表示形式。通过signed=True可以得到2-补码表示: i = 34 ba = bytearray() 然后,您可以扩展bytearray,结果如下: In [1]: i = 34 In [2]: i.to_bytes(length=2, byteorder='big') Out[2]: b'\x00"' 将'big'更改为'little'可以有效地反转字节添加到bytearray的顺序
I
的两个最低有效字节添加到ba
。如何才能做到这一点?您可以使用该方法将整数转换为二进制字节表示形式。通过signed=True
可以得到2-补码表示:
i = 34
ba = bytearray()
然后,您可以扩展bytearray
,结果如下:
In [1]: i = 34
In [2]: i.to_bytes(length=2, byteorder='big')
Out[2]: b'\x00"'
将'big'
更改为'little'
可以有效地反转字节添加到bytearray的顺序
如果您使用的是python2,则可以使用以下函数:
In [3]: ba = bytearray()
In [4]: ba.extend(i.to_bytes(length=2, byteorder='big'))
In [5]: ba
Out[5]: bytearray(b'\x00"')
您的问题缺少基本信息:您希望使用哪个字节表示数字?2-补码?1-补码?符号+大小?尾数+指数?或者你能定义的无限数中的另一个?@Bakuriu,我想按原样复制整数中最低的两个字节。换句话说,我想把整数“切片”成两部分,每个部分有两个字节,并将第一个字节复制到bytearray中。完美的答案!谢谢
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