Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将整数的一部分添加到bytearray_Python_Integer_Bytearray - Fatal编程技术网

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