Python 3.x 任意长度整数到字节数组转换(最高有效字节优先)

Python 3.x 任意长度整数到字节数组转换(最高有效字节优先),python-3.x,Python 3.x,在Python 3中,如何将任意长度(正)整数转换为字节对象?最重要的字节应该是第一个,这样它基本上是一个基于256的编码 对于固定长度值(最多为unsigned long-long),可以使用,但Python中似乎没有对大数转换的库支持 预期结果: >>> intToBytes(5) b'\x05' >>> intToBytes(256) b'\x01\x00' >>> intToBytes(6444498374093663777) b'Y

在Python 3中,如何将任意长度(正)整数转换为字节对象?最重要的字节应该是第一个,这样它基本上是一个基于256的编码

对于固定长度值(最多为unsigned long-long),可以使用,但Python中似乎没有对大数转换的库支持

预期结果:

>>> intToBytes(5)
b'\x05'
>>> intToBytes(256)
b'\x01\x00'
>>> intToBytes(6444498374093663777)
b'You won!'
结果中没有前导零字节: 还是作为一个班轮

intToBytes = lambda x: b"" if x==0 else intToBytes(x//256) + bytes([x%256])
连续连接常量字节对象的效率不高,但会使代码更短,可读性更强

作为替代,您可以使用

intToBytes = lambda x: binascii.unhexlify(hex(x)[2:])
但它的依赖项是
binascii

固定长度结果(必要时带前导零): 从Python3.2开始,您可以使用它,它还支持小端字节顺序

intToBytes = lambda x: binascii.unhexlify(hex(x)[2:])