将文件表示为等式?

时间:2014-11-12 22:17:07

标签: c binary compression

嘿,这是我关于SE的第一个问题,我很紧张。 我已经搜索了这个问题的答案并做了一些实验(一起编写了一些java代码),我似乎无法弄清楚是否可以将任何文件转换成代表机器十进制表示的等式构成文件的代码。

示例:

  • 接收档案
  • 变成二进制
  • 计算小数表示
  • 将数字转换为可以轻松保存或写入的等式 下来。

假设我在C编码,有没有人知道如何生成大二进制数的十进制表示?

1 个答案:

答案 0 :(得分:1)

你的问题的答案是“确定!”任何二进制数据都可以编码为任意长数,并且总是可以找到代表该数字的多个方程。

我怀疑你问的基本问题是,做这样的事情是否比原始文件本身更小。如果您的源文件恰好包含,例如字符串“10000000000”,则可以紧凑地表示为10 ^ 10,从而节省了大量字节。

是否可以这样做的答案是“不”。 Shannon的信息理论描述了以更紧凑的格式表示信息的基本限制。 (参见Wikipedia Article 'Information Theory'简而言之,它表示数据中的熵越多,以较小的格式表示信息的可能性就越小。现有的压缩算法,包括您将数据表示为等式的想法,依赖于其中具有可预测模式的源数据。例如,尝试压缩随机数的任意序列是不可能的。