如何解决将整数列表转换为字节/ascii 字符串并返回?快速地?
我正在尝试将数字列表转换为字符串并反转......这就是我得到的
def nums2ascii(nums,size=2):
return b''.join([n.to_bytes(size,'big') for n in nums ])
def ascii2nums(ascii,size=2):
return [int.from_bytes(ascii[i:i+size],'big') for i in range(0,len(ascii),size)]
我读到要走的路是使用 struct 模块来加快速度。助记词太多了,怎么简单的2、4、8。我是否正确阅读了 '>I'、'>R'、'>Q'? 我可以直接将列表传递给打包/解包而不是进行列表理解吗?
我的第二个问题是处理 int8、int16、int32、int64 的透明度如何......我是否坚持使用最大的一个,或者我是否决定在整个应用程序中坚持使用特定的一个/在这种情况下我必须放一个断言!!
解决方法
我会做这样的事情,假设系统短“h”是两个字节(通常是):
import struct
def nums2bytes(nums):
return struct.pack(f">{len(nums)}h",*nums)
def bytes2nums(b):
return struct.unpack(f">{len(b)//2}h",b)
您可以构建功能,表示 2 是“h”,4 是“i”等。请注意,大写字母表示无符号整数,小写字母表示有符号。
另一种方法是安装 numpy 并使用 numpy 数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。