Python中maxint与系统位数(32/64)的关系
来源:互联网 发布:android 手机淘宝源码 编辑:程序博客网 时间:2024/05/22 08:06
最近在学习Python的正则表达式时,需要批量生成一批随机数据。其中涉及到了模块sys、time中的maxint、ctime,代码在运行ctime格式化时间时候一直报错无法运行。经过对相关的资料的研究,发现maxint值在不同操作系统是不一样的,在64位操作系统下的maxint>2^32,而在32位操作系统maxint=2^32,ctime函数处理的秒数范围为0~2^32。
旧版本代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
报错提示
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
事例代码是由参考书提供的,理论上maxint获取的值没有问题,在ctime格式化会获得到相应的时间值,此处的报错本不应该发生。后来仔细查看ctime格式时间的范围限定在0~2^32。测试脚本位于CentOS7 64位系统,这样得到的maxint值为9223372036854775807,远大于2^32的值。dtint是由表达式 dtint = randrange(maxint)获取的,这样的dtint在很大概率上会得到大于2^32的值,超出了ctime的处理范围,所以就脚本一直在报错。
maxint值验证
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
修改后新版代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
修改后的代码很好的照顾了ctime可处理数值的上限,可得到如下结果:
0 0
- Python中maxint与系统位数(32/64)的关系
- Python中maxint与系统位数(32/64)的关系
- MaxInt
- 电脑内存与地址位数的关系
- 指针(内存大小和数据类型无关,和系统操作位数有关),对象,地址,和系统操作位数的关系
- 查看Linux系统的位数(64/32bit)
- python中类与函数的关系
- 系统位数和内存关系
- 操作系统位数与数据字节数的关系
- eclipse - 解决虚拟机与IDE位数不同时启动不了的问题(位数:32位/64位)
- 获得系统的位数(64 or 32)-几种方法
- linux下查看系统位数(32/64位)的方法
- python中numpy与matlab的对应关系
- Python中变量名与变量值的关系
- python中numpy与matlab的对应关系
- Oracle中系统process与session的关系
- uboot 与系统内核中 MTD分区的关系
- uboot 与系统内核中 MTD分区的关系
- 局部类(local class)
- Datatables API
- Android Studio 中实现高德定位并获取相应信息
- ARMv8-A系列学习笔记(1)--Chapter 1 Introduction.The change from 32-bit to 64-bit
- java.net.BindException: Address already in use: JVM_Bind
- Python中maxint与系统位数(32/64)的关系
- c-lodop初体验
- npm 安装加速
- React-Native的Android环境搭建
- Codeforces 767B
- c++ 使用libcurl 发送http get/post请求
- Python3 UnicodeEncodeError 问题解决
- 数据库设计--第七章上机题和课后简答题
- sql根据父id查询子项数据