您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在python中将64位整数转换为8个单独的1字节整数

在python中将64位整数转换为8个单独的1字节整数

在Python 2.x中,struct.pack返回一个字节字符串。将其转换为整数数组很容易。

>>> bytestr = struct.pack('>Q', 2592701575664680400)
>>> bytestr
'#\xfb X\xaa\x16\xbd\xd0'
>>> [ord(b) for b in bytestr]
[35, 251, 32, 88, 170, 22, 189, 208]

structpython中的模块用于将python对象转换为字节字符串,通常根据C结构打包规则进行打包。struct.pack采用格式说明符(一个字符串,该字符串描述应如何布局结构的字节)和一些python数据,并将其打包为字节字符串。struct.unpack进行相反的处理,采用格式说明符和字节字符串,然后再次以python对象的格式返回未打包数据的元组

所使用的格式说明符分为两部分。前导字符指定字符串的字节序(字节顺序)。以下字符指定要打包或解压缩的结构的字段的类型。因此,'>Q'意味着将给定数据打包为big- endian unsigned long long。要以相反的顺序获取字节,可以改用<little-endian。

最后的操作是列表理解,它遍历字节字符串的字符并使用ord内置函数获取该字符的整数表示。

最后说明:Python实际上没有整数大小的概念。在2.x中,int它的长度限制为32位,并且long大小不受限制。在3.x中,这两个被统一为一个类型。因此,即使此操作保证可以提供仅占用一个字节的整数,但如果您在其他操作中使用python,则注意python仍将迫使所得整数保持这种方式。

python 2022/1/1 18:25:36 有582人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶