需求:处理一个拥有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面试题:字节到大整数的打包与解包相关推荐

  1. 《Python Cookbook 3rd》笔记(3.5):字节到大整数的打包与解包

    字节到大整数的打包与解包 问题 你有一个字节字符串并想将它解压成一个整数.或者,你需要将一个大整数转换为一个字节字符串. 解法 假设你的程序需要处理一个拥有 128 位长的 16 个元素的字节字符串. ...

  2. Python字节到大整数的打包与解包

    需求:处理一个拥有128位长的16个元素的字节字符串 将bytes解析为整数,使用 int.from_bytes() 方法,并像下面这样指定字节顺序: # 为了将bytes解析为整数,使用 int.f ...

  3. python长整数相乘_python实现大整数相乘---格子乘法

    以前做ACM的时候,许多人都通过 BigInteger 来实现大数乘法,让我记忆犹新的事2012年的辽宁省赛在大连大学,第一道水题就是大整数乘法,那时还不会java. 大数乘法的实现是基于印度的格子乘 ...

  4. python 网络数据流打包与解包

    详细文章请参考: https://blog.csdn.net/youand_me/article/details/78890316 这个模块处理python中常见类型数据和Python bytes之间 ...

  5. python list tuple 打包 解包_python的打包与解包

    python的*与**,在函数的定义与调用过程中,有着不同的作用 打包参数: 一.函数定义时,形参前加*号(如:*args):收集实参中所有的位置参数,打包成新元组并将该元组赋值给args变量 实参位 ...

  6. Python中的打包与解包

     解包:Unpacking,比如你儿子去买包子回来分给你的家人. a, *b, c = [1, 2, 3, 4, 5] print(a) # 1 print(b) # [2, 3, 4] print( ...

  7. Python并行判断多个大整数是否为素数

    本文主要用到Python标准库concurrent.futures提供的并发执行功能,类似于进程池的用法,在多核或多CPU平台能够大幅度提高处理速度. from concurrent.futures ...

  8. python 窗口控件变大变小_详解:用Python+AutoIt实现界面工具开发过程

    前言: 今天为大家带来的内容是,详解:Python+AutoIt实现界面工具开发过程!(部分代码用图片方式呈现出来,方便各位观看与收藏) AutoIt简述 AutoIt一个使用类似BASIC脚本语言的 ...

  9. python数字处理技巧(1): 精度舍入、精确运算、格式化、进制数、大数打包解包、复数、NaN、分数

    1. 数字的四舍五入 当我们需要对整数 或者 浮点数进行四舍五入的时候. round(value, ndigits)  /// 内置函数 对浮点数进行四舍五入(传入的ndigit应该是正值,作用于十分 ...

最新文章

  1. 关于python导入模块和package的一些深度思考
  2. MapReduce编程实例之自定义排序
  3. python解析json_python3 解析 json 字符串并返回支持属性访问的对象
  4. Linux下制作和使用静态库和动态库
  5. 摩托罗拉v8对讲机驱动软件_摩托罗拉数字机如何设置“个性”提示音
  6. 前端学习(2767):下拉刷新的学习
  7. Apollo进阶课程 ⑦ | 高精地图的采集与生产
  8. 计算机网络项目——最小网元设计(阶段二)
  9. 消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...
  10. 机器学习算法(3)——线性回归与逻辑回归
  11. Java 并发编程CyclicBarrier的应用与源码解析(基于ReentrantLock实现)
  12. python编程入门教程100例_Python3入门经典100例(60-70)
  13. 二级c语言编程修改out文件夹,国家二级计算机c语言考试 程序设计题最后一题 怎么改out.dat文件 直接在文件里面给出答案...
  14. 基于C#的安全聊天工具设计
  15. 服务器Raid5磁盘阵列数据恢复步骤和数据恢复方法
  16. MySQL报错java.sql.SQLException: The server time zone value ‘乱码‘ is unrecognized or represents more tha
  17. 内后视镜和外后视镜哪个显示真实距离?
  18. c语言switch例题注释,switch语句例子大全 C语言switch语句例题
  19. GAMES104实录 | 游戏引擎导论(上)
  20. Invoking “make cmake_check_build_system“ failed

热门文章

  1. 手把手:R语言文本挖掘和词云可视化实践
  2. esp8266 rtos sdk在小黄板上的使用
  3. 重构项目之一:大图展示
  4. DR模式 mysqlABB读写分离
  5. 虚拟社会建设需要“网络社工”助力
  6. 我的技术博客在博客园落户了
  7. inline函数学习笔记
  8. python打出由边框包围的_python – 提取边框并将其保存为图像
  9. 自由自在休闲食品以创新助80后女孩成功创业
  10. sap 客户信贷配置与管理解析