关于压缩软件

goldbeef 2012-03-05 04:18:20
最近在做一个文本压缩软件的毕设,老师给出的测试数据有的是文本文档,有的是二进制文件,有的是图形文件,但是这些文件都没有后缀名!所以我想问下 在读写取这些文件的时候,有没有一种通用的 读写方法。
...全文
93 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-03-05
  • 打赏
  • 举报
回复
推荐使用WinHex软件查看文件或内存中的原始字节内容。
goldbeef 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhao4zhong1 的回复:]

为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。
[/Quote]明白了。。。多谢了!
goldbeef 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liuchao35758600 的回复:]

引用 3 楼 goldbeef 的回复:

引用 2 楼 liuchao35758600 的回复:

直接用7zip的源码就可以了,它是个开源的压缩软件。
额,这是我的毕设。。用bwt算法,和bzip的核心算法一样

通用的读写方法就是用fopen函数以及相关的文件操作函数。
文件有没有后缀不重要,只不过是方便识别罢了。
图片文件,文件开头处就会包含这个图片的主要信息,对于能打……
[/Quote]明白了,我之前对文本读的时候用的是 ifstream 对象的getline方法,对二进制文本读的时候用的是
ifstream对象的read方法。。忘了C中的 文件指针,谢谢了。
赵4老师 2012-03-05
  • 打赏
  • 举报
回复
为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。
灼眼的超哥 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liuchao35758600 的回复:]

引用 4 楼 liuchao35758600 的回复:

引用 3 楼 goldbeef 的回复:

引用 2 楼 liuchao35758600 的回复:

直接用7zip的源码就可以了,它是个开源的压缩软件。
额,这是我的毕设。。用bwt算法,和bzip的核心算法一样

通用的读写方法就是用fopen函数以及相关的文件操作函数。
文件有没有后缀不重要,只不过是方便识别罢了……
[/Quote]
压缩文件的时候,先写入头文件信息,之后写入编码后的数据。
灼眼的超哥 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liuchao35758600 的回复:]

引用 3 楼 goldbeef 的回复:

引用 2 楼 liuchao35758600 的回复:

直接用7zip的源码就可以了,它是个开源的压缩软件。
额,这是我的毕设。。用bwt算法,和bzip的核心算法一样

通用的读写方法就是用fopen函数以及相关的文件操作函数。
文件有没有后缀不重要,只不过是方便识别罢了。
图片文件,文件开头处就会包含这个图片的主要信息,对于能打……
[/Quote]
还有,如果想在解压后文件能和压缩前的文件名一样,那么,你就需要在你创建的压缩文件的头部分加上文件信息,包含文件名,例如:
NAME: file.jpg
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx

读取时,先gets,获取一行字符串,判断是否有NAME:这个字符串,之后用sscanf函数从字符串中获取NAME: 后面的字符串,这就是文件名,创建文件,文件名为刚刚得到的文件名。
已被压缩的文件的数据就是从第二行开始,读取第二行并解码数据,写入至创建的新文件中。
baichi4141 2012-03-05
  • 打赏
  • 举报
回复
第一,所有文件都是二进制数据,对于你这个压缩目的来说,管它是小说还是动画都没区别
第二,既然你能看出来有的是图片有的是文本,那怎么没有后缀名?在windows的文件夹选项里选择“隐藏已知类型的后缀名”了吧?
灼眼的超哥 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 goldbeef 的回复:]

引用 2 楼 liuchao35758600 的回复:

直接用7zip的源码就可以了,它是个开源的压缩软件。
额,这是我的毕设。。用bwt算法,和bzip的核心算法一样
[/Quote]
通用的读写方法就是用fopen函数以及相关的文件操作函数。
文件有没有后缀不重要,只不过是方便识别罢了。
图片文件,文件开头处就会包含这个图片的主要信息,对于能打开图片文件的软件,它会根据这个信息读取文件内的数据。
goldbeef 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuchao35758600 的回复:]

直接用7zip的源码就可以了,它是个开源的压缩软件。
[/Quote]额,这是我的毕设。。用bwt算法,和bzip的核心算法一样
灼眼的超哥 2012-03-05
  • 打赏
  • 举报
回复
直接用7zip的源码就可以了,它是个开源的压缩软件。
flowingfirefly 2012-03-05
  • 打赏
  • 举报
回复
存储在计算机中的数据都是二进制

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧