C# 最小化Decimal.csv文件的文件大小

C# 最小化Decimal.csv文件的文件大小,c#,ascii,filesize,C#,Ascii,Filesize,我需要将尽可能多的信息放入一个小文件中。在这种情况下,数据采用逗号分隔格式,所有值都存储为2dp小数(无标题) 我看了一下,我的理解是,我需要的所有字符都是使用ASCII(每个字符1字节)存储在我当前使用的标准.txt文件中的。显然,ASCII有256个可能的值,这比我需要的要多得多——我只需要16个字符就行了 我可以将数据保存在某种4位文本文件中吗?我将使用c#创建该文件(所有谷歌搜索结果都是关于生成文本文件的建议,而不是如何生成较小的“字体”文本)。这样做最终会节省空间吗? 在发送之前,我可

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

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

我可以将数据保存在某种4位文本文件中吗?我将使用c#创建该文件(所有谷歌搜索结果都是关于生成文本文件的建议,而不是如何生成较小的“字体”文本)。这样做最终会节省空间吗? 在发送之前,我可以把任何东西都拉上拉链,但是如果您能给我一些建议来减小文件大小,我将不胜感激

[文件]它将被一段c#代码读取

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

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

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


协议缓冲区比较简单,而且非常紧凑。

我认为这个问题是合理的,但答案是您强加的逻辑条件没有为任何解决方案留下任何位置

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


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

您可以做的一件事是将您的值乘以100以去除所有小数点。如果不更改格式,它不会变小(或者使用压缩,这无疑会改变格式)。为什么您需要它是CSV文件?如果您将其存储为二进制文件,它肯定会变小很多。但是,如果您与其他需要CSV的应用程序进行交互,则任何将其变小的尝试都会阻止其他应用程序读取它。您可以压缩文件吗?您可以轻松地以编程方式压缩数据,因此我建议您当然,那它就不再是一个CSV文件了,如果你要做这样的更改,为什么不在压缩之前把文件存储为二进制数呢?说真的,如果你想要一个小的CSV,只需压缩它。它将是非常重复的文本。它真的会压缩你可以得到标准格式(CSV)和小文件(ZIP)的所有好处。