c - 将文件表示为方程式?

标签 c binary compression

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

例子:

  • 接收文件
  • 转为二进制
  • 计算十进制表示
  • 将数字转换为可以轻松保存或写入的方程式 下来。

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

最佳答案

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

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

一般情况下是否可以做到这一点,答案是否定的。香农的信息论描述了以更紧凑的格式表示信息的基本限制。 (参见 Wikipedia Article 'Information Theory' 简而言之,数据中的熵越多,以较小格式表示该信息的可能性就越小。现有的压缩算法,包括您将数据表示为方程式的想法,依赖于源数据中具有可预测的模式。例如,试图压缩随机数的任意序列是不可能的。

关于c - 将文件表示为方程式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897721/

相关文章:

c - fgets溢出后如何清除输入缓冲区?

r - 在 R 中生成所有可能的长度为 n 的二进制向量

c - (C) 当以文本模式而不是二进制模式写入文件时,哪些字符会受到影响?

algorithm - 将 52 个整数编码成更少数量的好方法是什么?

错误的 fprintf 的 C++ 等价物

在 Windows 上将 valgrind 与 CLion 一起使用时,Clion 无法找到项目可执行文件

python - 读取一位操作python 2.6

c++ - FITS 创建压缩图像数据

list - 压缩矩形列表

c - 将结构传递给函数