基本上我想分隔一个int,让我们说77121980或多或少具有以下结构(0x04,0x98,0xc9,0xbc)No Strings。或者至少(4,152,201,188)。但到目前为止我只找到了像hex()
这样的方法答案 0 :(得分:3)
在python 3中,您可以使用int.to_bytes
:
>>> (77121980).to_bytes(4, 'big')
b'\x04\x98\xc9\xbc'
如果您想要值:
>>> _bytes = (77121980).to_bytes(4, 'big')
>>> tuple(_bytes)
(4, 152, 201, 188)
如果您使用的是python 2,则可以使用宽度有限的struct.pack
(请参阅打包possibilities):
>>> import struct
>>> struct.pack('>i', 77121980)
b'\x04\x98\xc9\xbc
答案 1 :(得分:0)
您可以使用二进制&
和bitshift运算符
i = 77121980
b = []
while i > 0:
b.append(i & 0xff)
i >>= 8
b = b[::-1]
b # [4, 152, 201, 188]
从原始数字开始,这会将最右边的字节附加到列表b
,然后向右移动,直到没有更多位移位。由于我们从右到左收集字节,因此结果列表的顺序相反,但您可以使用切片或reversed
轻松翻转它。