|
LiveOnLove
中级用户
积分 493
发帖 161
注册 2002-10-29 来自 ZHCN
状态 离线
|
『第
46 楼』:
是个难得的好东东!呵呵。非常感谢~
|
|
2006-7-27 22:31 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
47 楼』:
已做好了分卷,现在正想办法加入 压缩功能。。。
谁有好的又好移植的压缩/解压源码,介绍给我啊!。。。
|
|
2006-7-28 01:12 |
|
|
wang6610
银牌会员
积分 1246
发帖 488
注册 2003-11-11
状态 离线
|
|
2006-7-28 10:29 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
49 楼』:
做GHOST2不可能,但主要功能还是能做的,主要是DIY啊
如果作好了压缩,我就用自己的程序备份硬盘和分区啦!
这种满足是无与伦比的!
|
|
2006-7-28 10:52 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
50 楼』:
刚成功地解决了 压缩引擎问题,下一步就是嵌入到我的程序中实现压缩功能了!
这几天,在国外的网上遨游,下了不下几十套源码!在几百个文件中穿梭!
终于找到了我要的!解决了我的问题
就是 zlib !
简要的过程如下:
1
试了,简单古老的
LZ, LZW,HUFFMAN,LZHUF,LZSS,LZHARC, LZ77,LZARI,LZRW1等等,都不理想,太老,效率太低,只能用来教学。。
2
看了 ARJ/UNARJ,有很多我不要的功能。。
3
曾定在 GZIP(BZIP2,基本差不多),很不错,也觉得有点适合我,压缩比和速度都很好,还有1-9的压缩比选项。。钻研了几天,发现没有内存压缩,只有文件压缩,。。。
4
看到一个提示: zlib 支持内存压缩!
确定它了!
(ZLIB和GZIP,PNG都采用相同的引擎:基于LZ77和HUFFMAN的结合,当然和前面提到的古老原始的版本是不可同日而语的)
在此过程中,与DDCOPY作者李治联系了。取得了DDCOPY源么,对我有启发。。
不过,试了DDCOPY的压缩,不太理想,豪时长,压缩比低。因为他采用的压缩/解压的类较简单,就两个文件(用简单的LZSS,胡颖卓编写的类,后来我也在网上看到了)
将要采用的压缩引擎是先进的最新版的 zlib-1.2.3 库(与GZIP,PNG图象用的同一个引擎),
压缩比和压缩速度很快,解压速度更快的离谱!
在WIN32 控制台程序中,压缩50MB,大约要20秒,压为了25MB。
解压只要大约3秒! 我靠!
还有 压缩比的1-9选项(类似GHOST)。。。
[ Last edited by GOTOmsdos on 2006-7-29 at 23:47 ]
|
|
2006-7-29 23:33 |
|
|
wang6610
银牌会员
积分 1246
发帖 488
注册 2003-11-11
状态 离线
|
『第
51 楼』:
Quote: | Originally posted by GOTOmsdos at 2006-7-29 11:33 PM:
刚成功地解决了 压缩引擎问题,下一步就是嵌入到我的程序中实现压缩功能了!
这几天,在国外的网上遨游,下了不下几十套源码!在几百个文件中 ... |
|
你真牛。。。
|
|
2006-7-30 08:28 |
|
|
johnsonlam
银牌会员
阿林
积分 1410
发帖 497
注册 2004-6-28 来自 九龍,香港
状态 离线
|
『第
52 楼』:
Quote: | Originally posted by GOTOmsdos at 2006-7-29 11:33 PM:
刚成功地解决了 压缩引擎问题,下一步就是嵌入到我的程序中实现压缩功能了!
这几天,在国外的网上遨游,下了不下几十套源码!在几百个文件中 ... |
|
外 国 的 好 东 西 多 着 呢 !
这 令 我 觉 得 好 幸 福 , 可 分 享 他 人 的 成 果
也 觉 得 某 些 国 人 不 肯 分 享 , 真 悲 哀 ...
|
我 的 網 站 - http://optimizr.dyndns.org
|
|
2006-7-31 00:32 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
53 楼』:
完全解决拉!
已经成功放入纯DOS程序中,被调用,运行结果正确!
并且,令人激动的是:所采用的 ZLIB库的表现相当棒!
刚才,测试结果:
压缩备份:
压缩1000000个扇区(500MB),采用6级(最高9级)就能压为312MB !
(如用9级,大约能压到 250-280之间!)
而且用时仅12分钟!大约一秒钟1MB!(跟GHOST速度差不多!)
而且是读一个很老的2GB的硬盘!
(注意:由于GHOST不处理没有文件的的数据,所以,在备份分区时,所化的总时间自然就很少了。毕竟他不是整个扇区的全真备份。我的程序是的)
解压还原:
解压就快的离谱拉!
把压缩的景象文件(原500MB)解压后还原到硬盘上,大约1分钟左右!
简直不敢相信!这个ZLIB 的解压作者是 Mark Adler,真是牛!
他好象也美国火星计划的研究人员。。
现正在整理程序。进入最后阶段。。。
大概两三天能出来。。。
(DDCOPY 作者李治帮过我,由于我的程序采用了高效的压缩/解压库,出与感谢,我会把我的程序寄给他,希望在更加优越的压缩/解压方面,供他借鉴。。我会很高兴。。)
[ Last edited by GOTOmsdos on 2006-8-1 at 21:01 ]
|
|
2006-8-1 20:56 |
|
|
troylees
初级用户
积分 54
发帖 19
注册 2006-7-31
状态 离线
|
『第
54 楼』:
GOTOmsdos你好!
我看过了你写的源代码,心里就两个字"高手"。
不过,我有个问题,如果我用DJGPP编译的话,ExInt13函数中用到的FP_OFF和FP_SEG宏都是只有TC才有的定义,请问在DJGPP下怎么解决呢?
谢谢!!
|
|
2006-8-5 23:41 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
55 楼』:
程序加入了扇区到扇区方式的读写,也加了一些功能,完善了。。。
又更新了 !。。
TO troylees
你查一下TC3 的HELP
感谢关注,高手谈不上啊
FP_OFF
和FP_SEG
是宏
FP_OFF没什么, 替换成他的内容
FP_SEG 的内容 跟 _seg 有关 不知道 DJGPP 是否支持
如果不行,也没大关系
可直接把 那个扩展INT13的 结构体的指针 直接赋值 给那个寄存器变量也可以的,我原来就是这样的(运行结果正确,。后 考虑到规范,才改成这样的)
ZLIB中原带了 MAKEFILE FOR DJGPP2 的文件,我一起加进去吧。。。
|
|
2006-8-6 18:40 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
56 楼』:
将要添加如下功能:
1
支持古董级硬盘(不支持扩展INT13)的压缩分卷
2
四个主分区的读写(此功能,只有C有实用意义,因为,一般用户都把很多盘弄成了扩展分区的逻辑驱动器了)
[ Last edited by GOTOmsdos on 2006-8-6 at 21:52 ]
|
|
2006-8-6 20:58 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
57 楼』:
刚才更新的代码中,有个小错误 CASE :
现在已改过来重传了
|
|
2006-8-6 22:20 |
|
|
troylees
初级用户
积分 54
发帖 19
注册 2006-7-31
状态 离线
|
『第
58 楼』:
To:GOTOmsdos
Tc定义如下:
#define FP_OFF(fp) ((unsigned)(fp))
#define FP_SEG(fp) ((unsigned)((unsigned long)(fp) >> 16))
可以看出,TC编译的程序是用16位地址的,而djgpp编译的是用32位地址的。
所以,如果in.x.si =(unsigned long) (&DAP_package)这样还可以,但是sregs.ds = (unsigned long) (&DAP_package)这样就不行了,一个是16位,一个是32位。
所以,我觉得直接赋值应该是不可以的!!
|
|
2006-8-6 23:14 |
|
|
GOTOmsdos
铂金会员
C++启程者
积分 5154
发帖 1827
注册 2003-7-18
状态 离线
|
『第
59 楼』:
不是 sregs.ds = (unsigned long) (&DAP_package)
是 reg.x.si =&DAP_package
这样一般就可以的,我试过的。。
|
|
2006-8-7 02:22 |
|
|
troylees
初级用户
积分 54
发帖 19
注册 2006-7-31
状态 离线
|
|
2006-8-8 12:28 |
|