如何快速读写浮点数据,而不是使用字符串?

Posted

技术标签:

【中文标题】如何快速读写浮点数据,而不是使用字符串?【英文标题】:How to write and read float data fast, not using string? 【发布时间】:2012-09-05 01:42:04 【问题描述】:

我有许多从图像生成的浮点数据。我想将它存储到一个文件中,比如 XX.dat (一般在 C 中)。我会再读一遍做进一步的处理。

我有方法用 nsstring 表示浮点数并将其写入 .txt 文件。但它太慢了。是否有一些函数与 c 中的 fwrite( *data , *pfile) 和 fread(*buf, *pfile) 相同?还是一些新想法?

非常感谢!

【问题讨论】:

【参考方案1】:

ios 中,您仍然可以使用标准的低级文件(以及套接字等)API。因此,您可以像在任何其他 C 程序中一样使用 fopen()fwrite()fread() 等。

这个问题有一些在iOS上使用低级文件API的例子:iPhone Unzip code

另一个要考虑的选项是将你的浮点数写入NSMutableData 实例,然后将其写入文件。这将比将所有内容转换为字符串更快(您将获得二进制文件而不是文本文件),尽管可能仍不如使用低级 API 快。而且您可能必须使用 this 之类的东西在浮点数和字节数组之间进行转换。

【讨论】:

非常感谢aroth!有你指导,我完成了工作,再次感谢!【参考方案2】:

如果您熟悉较低级别的访问,您可以映射您的文件,然后像访问任何已分配的内存一样直接访问数据。

【讨论】:

我编写了 c 代码来写入或读取具有较低级别访问权限但在 object-c 中不知道的数据。谢谢你的小费。我会尝试aroth的方法。 Objective-C 是 C 的超集。你可以在 C 中做的任何事情,都可以在 Objective-C 中做。

以上是关于如何快速读写浮点数据,而不是使用字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将浮点值附加为字典中的浮点数?

51单片机c语言如何把浮点型转为字符串 ?

将浮点数转换为字符串而不会丢失精度

如何在包含浮点数和 Nan 或 None 值的同一列中舍入浮点值?

如何在lisp中以指定格式将数字打印为浮点数?

为啥 Kivy 使用浮点数而不是整数?