美文网首页
Python3 - 字节到大整数的打包与解包

Python3 - 字节到大整数的打包与解包

作者: 惑也 | 来源:发表于2018-12-20 09:57 被阅读37次

问题

将一个字节字符串解压成一个整数。或者将一个大整数转换为一个字节字符串。

解决方案

假设程序需要处理一个拥有128位长的16个元素的字节字符串。比如:

data = b'\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004'

将字节字符串(bytes)解析为整数,使用 int.from_bytes() 方法,并可以指定字节顺序:

print(len(data))
print(int.from_bytes(data, 'little'))
print(int.from_bytes(data, 'big'))

16
69120565665751139577663547927094891008
94522842520747284487117727783387188

将一个大整数转换为一个字节字符串,使用 int.to_bytes() 方法,并像下面这样指定字节数和字节顺序:

x = 94522842520747284487117727783387188

print(x.to_bytes(16, 'little'))
print(x.to_bytes(16, 'big'))

b'4\x00#\x00\x01\xef\xcd\x00\xab\x90x\x00V4\x12\x00'
b'\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004'

讨论

大整数和字节字符串之间的转换操作并不常见。 然而,在一些应用领域有时候也会出现,比如密码学或者网络。 例如,IPv6网络地址使用一个128位的整数表示,从数据记录中提取这样的值时,就会用到。

相关文章

网友评论

      本文标题:Python3 - 字节到大整数的打包与解包

      本文链接:https://www.haomeiwen.com/subject/kfbekqtx.html