OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7307|回复: 16

用F407解压.ZIP文件!!!

[复制链接]

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
发表于 2017-5-10 19:01:40 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-5-12 01:07:43 | 显示全部楼层
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
 楼主| 发表于 2017-5-12 11:50:44 | 显示全部楼层
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
 楼主| 发表于 2017-5-12 14:54:23 | 显示全部楼层
我只能解压32K大小东西!唉,还能解压再大些吗?
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
 楼主| 发表于 2017-5-16 15:51:29 | 显示全部楼层
解压算法过程:
一. 压缩了file.zip ,内部只有一个空文件1, 进行调试跟踪.
1.  打开压缩文件.
2. 查询centraldir信息从end of centraldir
  2.1.  获取文件大小.
  2.2.  如果文件大小小于MAX_COMMENTSIZE 那么直接读取整个文件,否则读取MAX_COMMENTSIZE。  
  2.3.  读取出readsize。
  2.4.  从读取出的buffer中来判断0x06054b50,找出这个end of centraldir位置.
  2.5.  调转到endcentralpos 读取signature code(0x06054b50)
  2.6.  读取卷数,entry数量,centraldir 大小/偏移量,comment_size 等.
  2.7.  centralendpos -(centraloffset + centraldirsize) , 来获取centraldir对于卷开头位置的偏移量,准备读取centraldir.
3. 读取centraldir信息
  3.1.  从offsetcentraldir开始读取signature(0x02014b50) .
  3.2.  读取出版本号,压缩方式,日期信息,CRC,压缩大小,未压缩大小,entryname大小,file_extra_size , size_comment_file,起始卷index,internal file attr., external file attr., 当前项对于centraldir 的offset.
4. 读取entryinternal信息,比如名称,offset
5. 读取local file header 信息
  5.1. 检查signature(0x04034b50) , 日期,协议中local header信息.
二. 内部空目录1, 进行调试跟踪
   实际上差别仅仅在entryname,entryname length,以及由此导致的结构offset.
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
 楼主| 发表于 2017-5-16 15:51:42 | 显示全部楼层
解压算法过程:
一. 压缩了file.zip ,内部只有一个空文件1, 进行调试跟踪.
1.  打开压缩文件.
2. 查询centraldir信息从end of centraldir
  2.1.  获取文件大小.
  2.2.  如果文件大小小于MAX_COMMENTSIZE 那么直接读取整个文件,否则读取MAX_COMMENTSIZE。  
  2.3.  读取出readsize。
  2.4.  从读取出的buffer中来判断0x06054b50,找出这个end of centraldir位置.
  2.5.  调转到endcentralpos 读取signature code(0x06054b50)
  2.6.  读取卷数,entry数量,centraldir 大小/偏移量,comment_size 等.
  2.7.  centralendpos -(centraloffset + centraldirsize) , 来获取centraldir对于卷开头位置的偏移量,准备读取centraldir.
3. 读取centraldir信息
  3.1.  从offsetcentraldir开始读取signature(0x02014b50) .
  3.2.  读取出版本号,压缩方式,日期信息,CRC,压缩大小,未压缩大小,entryname大小,file_extra_size , size_comment_file,起始卷index,internal file attr., external file attr., 当前项对于centraldir 的offset.
4. 读取entryinternal信息,比如名称,offset
5. 读取local file header 信息
  5.1. 检查signature(0x04034b50) , 日期,协议中local header信息.
二. 内部空目录1, 进行调试跟踪
   实际上差别仅仅在entryname,entryname length,以及由此导致的结构offset.
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
 楼主| 发表于 2017-5-16 15:52:30 | 显示全部楼层
自己做个笔记,方便后来人
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3708
金钱
3708
注册时间
2011-5-23
在线时间
2010 小时
发表于 2017-5-16 16:17:09 | 显示全部楼层
欢迎分享一下解压速度和资源消耗。

ROM和RAM各占用多少? 解压过程中动态malloc了多少?
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-5-16 21:05:44 | 显示全部楼层
于大圣 发表于 2017-5-16 15:52
自己做个笔记,方便后来人

用F7应该可以。。。外部有32M SDRAM
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-4-28
在线时间
15 小时
 楼主| 发表于 2017-5-17 10:37:19 | 显示全部楼层
aozima 发表于 2017-5-16 16:17
欢迎分享一下解压速度和资源消耗。

ROM和RAM各占用多少? 解压过程中动态malloc了多少?

占ROM和RAM很小,解压速度看你使用芯片了吧?字典大小32KB
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3708
金钱
3708
注册时间
2011-5-23
在线时间
2010 小时
发表于 2017-5-17 12:17:48 | 显示全部楼层
很小是多少? 几K还是几百K?

之前用过GZIP,CODE有30-40K(仅解压),解压时动态内存需要约32KB。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-5-17 21:15:43 | 显示全部楼层
aozima 发表于 2017-5-17 12:17
很小是多少? 几K还是几百K?

之前用过GZIP,CODE有30-40K(仅解压),解压时动态内存需要约32KB。

在STM32上用的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3708
金钱
3708
注册时间
2011-5-23
在线时间
2010 小时
发表于 2017-5-17 22:11:42 | 显示全部楼层

都用过,STM32也用过。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-5-22 01:36:59 | 显示全部楼层
aozima 发表于 2017-5-17 22:11
都用过,STM32也用过。

可以啊,不过暂时想不到要用的地方
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2013-11-4
在线时间
112 小时
发表于 2018-8-24 15:30:32 | 显示全部楼层
请教大神,能解压电脑的ZIP文件吗,你把mini zip的文件系统替换成FATFS的了吗
回复

使用道具 举报

18

主题

155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2016-7-8
在线时间
818 小时
发表于 2020-12-28 16:57:42 | 显示全部楼层
我现在也需要单片机解压文件ZIP文件,不知道采用哪种方法比较合适,请高手指点
回复

使用道具 举报

18

主题

155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2016-7-8
在线时间
818 小时
发表于 2021-1-5 20:09:22 | 显示全部楼层
于大圣 发表于 2017-5-16 15:51
解压算法过程:
一. 压缩了file.zip ,内部只有一个空文件1, 进行调试跟踪.
1.  打开压缩文件.

你好,请问一个zip文件里面有多个文件,怎么解压比较好?麻烦指导一下,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 05:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表