首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么分组struct.pack写入错误的数据?

为什么分组struct.pack写入错误的数据?
EN

Stack Overflow用户
提问于 2017-05-29 09:28:36
回答 1查看 52关注 0票数 1

我只花了大约30分钟的时间调试和反复检查Python&C#代码,以发现我的struct.pack写错了数据。当我把它分成几个单独的电话时,它工作得很好。

这是我以前的经历

代码语言:javascript
复制
file.write(struct.pack("fffHf", kf_time / frame_divisor, kf_in_tangent, kf_out_tangent, kf_interpolation_type, kf_value))

这就是我现在拥有的

代码语言:javascript
复制
file.write(struct.pack("f", kf_time / frame_divisor))
file.write(struct.pack("f", kf_in_tangent))
file.write(struct.pack("f", kf_out_tangent))
file.write(struct.pack("H", kf_interpolation_type))
file.write(struct.pack("f", kf_value))

为什么第一个变体不写我所期望的数据?和单独写这些有什么不同呢?

(文件以二进制模式打开,平台为64位Windows,Python3.5)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-29 09:36:41

大概是因为,正如struct文档明确指出的那样:

默认情况下,注意到,打包给定C结构的结果包括pad字节,以便为所涉及的C类型保持正确的对齐;类似地,在解压缩时也会考虑对齐。选择此行为是为了使打包结构的字节与对应的C结构的内存中的布局完全对应。若要处理与平台无关的数据格式或省略隐式pad字节,请使用标准大小和对齐方式,而不是本机大小和对齐方式:有关详细信息,请参阅Byte Order, Size, and Alignment

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44239031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档