二进制与ASCII文件大小


17

我需要从计算中写入一些数据,稍后再由Paraview(.vtu或vtk文件)读取。

说到文件大小,我应该选择ASCII格式还是二进制格式?

Answers:


20

如果您唯一担心的是文件大小,则需要二进制文件。举一个说明性的例子,假设您正在向文件写入1个双精度浮点数。假设文件系统可以完美地处理此问题,并且文件,标头和填充都为0。

对于二进制文件,该数字将占用RAM中数字的确切大小,即8个字节。

以ASCII格式保存:

  • 基数的16位数字
  • 1个小数点
  • 1个字符来分隔指数
  • 1个字符的指数符号
  • 2-3个字符的指数

假设它只使用1个字节的字符,那就是22个字节来保存相同的数字。这不计算在数字之间定界所需的字符(通常至少为1)。因此,ASCII格式的文件大小将约为3倍。

您可以将文件大小换成存储文件中的精度(基数只能保留5到6位),但这取决于您使用它们的目的。ASCII的主要优点是用于调试或生成人类可读数据。


3
在科学领域中,长期存档和可靠的共享也很重要,这就是为什么尽管效率低下,但ASCII CSV如此普遍并被推荐(PDF)的原因
horchler 2013年

2
另一个有用的观点是,尽管ASCII CSV编码效率不是很高,但是在ascii文件上使用文件压缩实用程序(例如zip,gzip等)通常会使文件大小减小到类似于二进制文件的大小。 。
Brian Borchers

3
请注意,因为某些输入/输出库在输出以ASCII格式的IEEE Double Precision数字然后读回它们时,不够小心,无法获得逐位的可重复性。以我的经验,为了安全起见,有时需要使用17或18个十进制数字。
Brian Borchers

5
关于horchler的评论:我敢肯定,使用良好的标准化开放二进制格式(例如HDF5)将会存在很长时间。这就是我个人推荐的。
AlexE 2013年

1
+我会尽可能地坚持使用二进制文件,以确保准确性,紧凑性,省心性以及(特别是)速度。然后,如果需要进一步的紧凑性,可以将其压缩。如果我需要能够直观地阅读内容,可以为此编写一个小程序。另一方面,如果视觉更重要,并且可以轻松地传递给Excel,R等随机程序,那么CSV是必经之路。
Mike Dunlavey 2013年

15

实际上,您很少需要可视化文件中的数据比3个有效数字更准确的数据。在这种情况下,ASCII可能比二进制格式更紧凑(也许令人惊讶)。如果您正在考虑存档,那么将这些ASCII文件进行bzip压缩很可能会产生您可以获得的最小文件。

也就是说,Paraview会读取VTU格式,该格式具有压缩的二进制形式(基于XML,但是首先对文件进行libz压缩,然后再次对其进行uuencoded以产生ASCII文本)。在典型文件上,这可以节省4-10倍。对于大文件,这绝对是必经之路。


2
我赞成与其他答案形成对比。无论哪种方式,我都没有强烈的意见,但是这里有一个很好的观点。
比尔·巴特

或者,将低位显式清零并压缩二进制文件。
杰德·布朗

哇,这需要花点时间摆弄。还是有执行此操作的功能?(除了投放浮动和返回翻倍。)
Wolfgang Bangerth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.