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

时间:2019-02-04 09:17:53

标签: c# ascii filesize

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

我看了一下,我的理解是,我需要的所有字符都使用ASCII码(每个字符1个字节)存储在我当前使用的标准.txt文件中。显然ASCII有256个可能的值,这远远超出了我的需要-我只能用16个字符来搞定。

我可以将数据保存在某种4位文本文件中吗?我将使用C#创建文件(所有google搜索都会给出有关制作文本文件的建议,而不是有关如何制作较小的“字体”文本的建议)。这样做最终会节省任何空间吗? 我可以在发送之前压缩所有内容,但是任何有关减小文件大小的想法的建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

  

[文件]将由一段C#代码读取

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

节省空间并重复使用现有代码的快速方法是压缩CSV。 Gzip是内置的,但功能较弱。您可以使用7压缩库。 7-Zip算法是最新技术。如果将消除由小数点和主要使用字符0-9引起的冗余。不会删除其中的100%,而是删除99%(?)。

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

Protocol Buffers比较容易,而且非常紧凑。

答案 1 :(得分:0)

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

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

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