python 在64位系统和32位系统数据类型的大小不同问题。
时间:2010-11-16
来源:互联网
一段代码,读二进制文件,转换到数据结构,在32位下正常,在64位下报错,想来应该是64位数据类型
大小的问题。
代码大概如下:
Format = 'lllllfll'
f = open('test.dat','rb')
data = f.read(32)
s=[]
s.append(struct.unpack(Format,data))
最后一句32位下正常,64位下报:“struct.error: unpack requires a string argument of length 64”
改成
data = f.read(64)
仍然是这个错。
请问:
1 如何获得 lllllfll 的正确长度?
2 正确长度是?
刚接触python,就被要求移植32位代码。谢指点。
大小的问题。
代码大概如下:
Format = 'lllllfll'
f = open('test.dat','rb')
data = f.read(32)
s=[]
s.append(struct.unpack(Format,data))
最后一句32位下正常,64位下报:“struct.error: unpack requires a string argument of length 64”
改成
data = f.read(64)
仍然是这个错。
请问:
1 如何获得 lllllfll 的正确长度?
2 正确长度是?
刚接触python,就被要求移植32位代码。谢指点。
作者: r3000 发布时间: 2010-11-16
一、把l换成i试试。
二、你是什么操作系统?小心换到别的OS上又完蛋了。
二、你是什么操作系统?小心换到别的OS上又完蛋了。
作者: iambic 发布时间: 2010-11-16
又在测了一下,很奇怪。
代码原来的运行环境是windows 7 32位,目标是 FreeBSD 64位。
在python的命令行模式下 ,一句句执行, 改为 data = f.read(64)
就正确了,但执行.py 文件就打印struct.error: unpack requires a string argument of length 64
删掉了pyc文件
代码原来的运行环境是windows 7 32位,目标是 FreeBSD 64位。
在python的命令行模式下 ,一句句执行, 改为 data = f.read(64)
就正确了,但执行.py 文件就打印struct.error: unpack requires a string argument of length 64
删掉了pyc文件
作者: r3000 发布时间: 2010-11-16
按2楼说的,换成i 就好了。道理是 64位下的int 相当于32位下的 long?
作者: r3000 发布时间: 2010-11-16
和操作系统也有关系。同样是64位的操作系统,Windows和UNIX行为可能不太一样。UNIX上的long可能是64位,Windows可能就是32位。自己多试试,就有经验了。我用的不多,很多时候也记不清楚。
作者: iambic 发布时间: 2010-11-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28