ara*_*bec 13 c compression algorithm
这是夏天,所以我决定自己编写一个数据压缩程序,最好是用C代码编写.我有一个不错的初学者了解压缩是如何工作的.我只是有几个问题:
1)c是一种合适的编程语言来完成这项任务吗?
2)我应该在输入文件的字节中工作吗?或者以某种方式在二进制级别?
如果有人能给我一个正确方向的推动,我真的很感激.我想自己编写代码,而不是使用预先存在的压缩库或类似的东西.
回答您的问题:
我的意见是,首先决定你想要做 alossless compression还是 a lossy compression,然后选择一个算法来实现。这里有一些提示:
对于无损的,有些是非常直观的,比如run-length编码,例如,如果有a11s和5s b,你只需将它们编码为11a5b。一些算法使用a dictionary,请参考LZW encoding。最后,我确实推荐Huffman编码,因为它非常直接、简单且有助于获得学习算法的经验(用于您的教育目的)。
对于有损的,Discrete Fourier Transform (DFT)或wavelet用于 JPEG 压缩。这对于理解多媒体压缩很有用。
维基百科页面是一个很好的起点。
你可以先看一下Huffman Encoding.许多计算机科学课程将其作为一个项目来实现,因此它应该是可管理的.C适用于霍夫曼编码,但可能更容易在更高级别的语言中进行,以便您理解这些概念.有Java的幻灯片,提示和示例项目可用于主要级别的项目.宾夕法尼亚大学(在该页面上搜索"怒气冲冲").
1)c 是完成这项任务的合适编程语言吗?
是的。
2)我应该以字节的形式处理输入文件吗?或者以某种方式在二进制级别?
它们是相同的,所以这个问题没有意义。
不使用预先存在的压缩库
您可以使用预先存在的压缩算法吗?有数十种“压缩算法”——当与谷歌一起使用时——将揭示大量有用的信息。