首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IEEE 754交换格式的记录/读取C doubles

IEEE 754交换格式的记录/读取C doubles
EN

Stack Overflow用户
提问于 2010-04-24 03:45:51
回答 1查看 725关注 0票数 3

因此,我正在序列化一个跨平台使用的C数据结构,并且我希望确保以跨平台的方式记录我的浮点数。

我一直打算做的就是

代码语言:javascript
复制
 char * pos;
 /*...*/
 *((double*) pos) = dataStructureInstance->fieldWithOfTypeDouble;
 pos += sizeof(double);

但我不确定这些字节是否会以IEEE754交换格式记录在char *数组中。我以前也遇到过跨平台问题(endian-ness和诸如此类的问题)。需要对double做什么才能得到交换格式的字节吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-24 07:18:23

C实现根本不需要使用IEEE754表示,所以任何基于直接访问double的二进制表示的解决方案都不是真正的可移植性。

如果您只想使用表示IEEE754格式的双精度的系统,而endianness是唯一需要考虑的问题(并且您假设大端字节序列和小端字节序列是唯一的选择!)...然后,您也许可以在运行时使用具有已知二进制表示的某个值来探测字节顺序(就像您可以通过查看0x12345678是以0x12还是0x78作为第一个字节存储来测试整数一样)。

(如果你真的关心可移植性,我不确定还有比使用sprintf()strtod()更好的选择,并假设你可能没有必要比相关规范要求的绝对最低精度更高,例如C99规范的5.2.4.2.2节。)

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

https://stackoverflow.com/questions/2701529

复制
相关文章

相似问题

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