Python面试题:字节到大整数的打包与解包
需求:处理一个拥有128位长的16个元素的字节字符串
将bytes解析为整数,使用 int.from_bytes() 方法,并像下面这样指定字节顺序:
# 为了将bytes解析为整数,使用 int.from_bytes() 方法,并像下面这样指定字节顺序:
data = b'\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004'
print(len(data)) # 16
# 如果byteorder为'big',则最重要的字节位于字节数组的开头。 如果byteorder为'little',则最重要的字节位于字节数组的末尾。
print(int.from_bytes(data,"little")) # 69120565665751139577663547927094891008
print(int.from_bytes(data,"big")) # 94522842520747284487117727783387188
将一个大整数转换为一个字节字符串,使用 int.to_bytes() 方法,并像下面这样指定字节数和字节顺序:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
x=69120565665751139577663547927094891008
# 如果byteorder为'big',则最重要的byte位于字节数组的开头。 如果byteorder为'little',则最重要的byte位于字节数组的末尾。
print(x.to_bytes(16,"little")) # b'\x00\x124V\x00x\x90\xab\x00\xcd\xef\x01\x00#\x004'
print(x.to_bytes(16,"big")) # b'4\x00#\x00\x01\xef\xcd\x00\xab\x90x\x00V4\x12\x00'
试着将一个整数打包为字节字符串
x=523**23
# print(x.to_bytes(16,"little")) # 报错:OverflowError: int too big to convert
# 解决:int.bit_length() 方法先判断需要多少字节位来存储这个值
print(x.bit_length()) # 208 意思是需要208个字节位存储
nbytes, rem = divmod(x.bit_length(), 8)
print(nbytes, rem) # 26,0
if rem :nbytes+=1
print(nbytes, rem) # 26,0
print(x.to_bytes(nbytes,"little")) # b'\x03X\xf1\x82iT\x96\xac\xc7c\x16\xf3\xb9\xcf\x18\xee\xec\x91\xd1\x98\xa2\xc8\xd9R\xb5\xd0'
Python面试题:字节到大整数的打包与解包相关推荐
- 《Python Cookbook 3rd》笔记(3.5):字节到大整数的打包与解包
字节到大整数的打包与解包 问题 你有一个字节字符串并想将它解压成一个整数.或者,你需要将一个大整数转换为一个字节字符串. 解法 假设你的程序需要处理一个拥有 128 位长的 16 个元素的字节字符串. ...
- Python字节到大整数的打包与解包
需求:处理一个拥有128位长的16个元素的字节字符串 将bytes解析为整数,使用 int.from_bytes() 方法,并像下面这样指定字节顺序: # 为了将bytes解析为整数,使用 int.f ...
- python长整数相乘_python实现大整数相乘---格子乘法
以前做ACM的时候,许多人都通过 BigInteger 来实现大数乘法,让我记忆犹新的事2012年的辽宁省赛在大连大学,第一道水题就是大整数乘法,那时还不会java. 大数乘法的实现是基于印度的格子乘 ...
- python 网络数据流打包与解包
详细文章请参考: https://blog.csdn.net/youand_me/article/details/78890316 这个模块处理python中常见类型数据和Python bytes之间 ...
- python list tuple 打包 解包_python的打包与解包
python的*与**,在函数的定义与调用过程中,有着不同的作用 打包参数: 一.函数定义时,形参前加*号(如:*args):收集实参中所有的位置参数,打包成新元组并将该元组赋值给args变量 实参位 ...
- Python中的打包与解包
解包:Unpacking,比如你儿子去买包子回来分给你的家人. a, *b, c = [1, 2, 3, 4, 5] print(a) # 1 print(b) # [2, 3, 4] print( ...
- Python并行判断多个大整数是否为素数
本文主要用到Python标准库concurrent.futures提供的并发执行功能,类似于进程池的用法,在多核或多CPU平台能够大幅度提高处理速度. from concurrent.futures ...
- python 窗口控件变大变小_详解:用Python+AutoIt实现界面工具开发过程
前言: 今天为大家带来的内容是,详解:Python+AutoIt实现界面工具开发过程!(部分代码用图片方式呈现出来,方便各位观看与收藏) AutoIt简述 AutoIt一个使用类似BASIC脚本语言的 ...
- python数字处理技巧(1): 精度舍入、精确运算、格式化、进制数、大数打包解包、复数、NaN、分数
1. 数字的四舍五入 当我们需要对整数 或者 浮点数进行四舍五入的时候. round(value, ndigits) /// 内置函数 对浮点数进行四舍五入(传入的ndigit应该是正值,作用于十分 ...
最新文章
- 关于python导入模块和package的一些深度思考
- MapReduce编程实例之自定义排序
- python解析json_python3 解析 json 字符串并返回支持属性访问的对象
- Linux下制作和使用静态库和动态库
- 摩托罗拉v8对讲机驱动软件_摩托罗拉数字机如何设置“个性”提示音
- 前端学习(2767):下拉刷新的学习
- Apollo进阶课程 ⑦ | 高精地图的采集与生产
- 计算机网络项目——最小网元设计(阶段二)
- 消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...
- 机器学习算法(3)——线性回归与逻辑回归
- Java 并发编程CyclicBarrier的应用与源码解析(基于ReentrantLock实现)
- python编程入门教程100例_Python3入门经典100例(60-70)
- 二级c语言编程修改out文件夹,国家二级计算机c语言考试 程序设计题最后一题 怎么改out.dat文件 直接在文件里面给出答案...
- 基于C#的安全聊天工具设计
- 服务器Raid5磁盘阵列数据恢复步骤和数据恢复方法
- MySQL报错java.sql.SQLException: The server time zone value ‘乱码‘ is unrecognized or represents more tha
- 内后视镜和外后视镜哪个显示真实距离?
- c语言switch例题注释,switch语句例子大全 C语言switch语句例题
- GAMES104实录 | 游戏引擎导论(上)
- Invoking “make cmake_check_build_system“ failed