最小化十进制 .csv 文件的文件大小

Minimise File Size for Decimal .csv file

我需要将尽可能多的信息放入一个小文件中。在这种情况下,数据采用逗号分隔格式,所有值都存储为 2dp 小数(无标题)。

我看过了,我的理解是我需要的所有字符都使用 ASCII(每个字符 1 个字节)存储在我当前使用的标准 .txt 文件中。显然 ASCII 有 256 个可能的值,这比我需要的多得多——我只需要 16 个字符就可以了。

我可以将我的数据保存在某种 4 位文本文件中吗?我将使用 c# 创建文件(所有 google 搜索都会提供关于制作文本文件的建议,而不是如何制作更小的 "font" 文本)。这样做最终会节省任何 space 吗? 我可以在发送任何内容之前将其压缩,但如有任何关于减小文件大小的想法的建议,我们将不胜感激。

[the file] it will be read by a piece of c# code

您因此控制了序列化格式。你可以选择任何你喜欢的格式。

保存 space 和重用现有代码的一种快速方法是压缩 CSV。 Gzip 是内置的,但它相当弱。您可以使用 7-Zip 库。 7-Zip 算法是最先进的。 If 将消除由小数点和主要使用字符 0-9 引起的冗余。它不会删除其中的 100%,而是 99%(?)。

您可以通过使用更好的格式来提高效率。您可以使用 BinaryReader/Writer 轻松编写完全自定义的内容。

Protocol Buffers 更简单,也非常紧凑。

我认为这个问题是合理的,但答案是你强加了逻辑条件,没有任何解决方案的余地。

因此,如果您可以避免为您的自定义结构使用 CSV 结构,您可以节省一些东西,但您需要它,它几乎决定了您的解决方案。剩下的唯一变量是如何对文本进行编码,但不能将文本编码为少于 8 位,您可以使用更高的值,如 Unicode(16 位)。

我不会评论使用压缩,因为您已经提到您正在寻找替代答案并且您知道这一点。