关于SWF文件的格式分析
发布时间:2020-12-15 06:17:09 所属栏目:百科 来源:网络整理
导读:?首先.我们来看一下SWF文件头格式: 以一个实际的SWF文件头为例: 46 57 53 05 B4 66 07 00 70 00 0F A0 00 00 BB 80 00 0C 9F 03 字节 1-3 (46 57 53): SWF文件头标志,FWS表示未压缩,CWS表示压缩的SWF文件,需要从第9个字节起用ZLib解压 字节 4 (05):
?首先.我们来看一下SWF文件头格式:
以一个实际的SWF文件头为例: 46 57 53 05 B4 66 07 00 70 00 0F A0 00 00 BB 80 00 0C 9F 03 字节 1-3 (46 57 53): SWF文件头标志,FWS表示未压缩,CWS表示压缩的SWF文件,需要从第9个字节起用ZLib解压 字节 4 (05): Flash文件的版本,这里表明它是用Flash5生成的 字节 5-8 (B4 66 07 00):一个Integer表示文件的长度,低在前,高在后,这里是$000766B4 = 485044字节,这里应该等于未压缩的SWF文件实际大小或压缩过的SWF解压后的长度+文件头(8字节) 字节 9 - 。。。: SWF显示区域,(左上角坐标,右下角坐标),用下面的方法计算得到:第9字节前5位(70 shr 3 = 14),以后的字节以14位进行分割,所需位数为 14*4+5 = 61,需要 8 个字节来表示,那么: 70 00 0F A0 00 00 BB 80 01110 00000000000 00001111 10100000 00000000 0000000 010111011 10000000 01110 00000000000000 02222201000000 00000000000000 01011101110000 000 14 0 8000 0 6000? 因为Flash的坐标是TWIP格式的,需要除以20的,所以实际为(0,400,300) 接下来的两字节 (00 0C):表示帧速率,前一字节表示小数位,后一字节表示整数位,不过一般极少有小数位的帧率,所以一般我们只计整数就可以了,这里 $0C = 12,即每秒12帧再接下来的两字节 (9F 03):表示总帧数,WORD类型,$039F=927帧,与ShockwaveFlash.TotalFrames 得到的数值是一样的。 再后面的数据是SWF的实体数据 转自:http://blog.csdn.net/mmtogo/article/details/4179223 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |