解析swf的RECT结构
来源:互联网 发布:阿里数据分析 编辑:程序博客网 时间:2024/05/01 08:34
解析SWF文件头中的Rect结构
转自:http://www.wwswf.com/?p=897
swf头中的Rect结构是按照位进行存储的,而不是字节,因为存储的值是跨字节的,而且存储的单位是twip,相当于二十分之一像素。
Rect结构中包含四个信息,按照顺序依次为:Xmin、Xmax、Ymin、Ymax,分别表示 X,Y轴方向上的最小和最大值。
Rect中前五位表示一个长度信息n,就是其中要存储的四个值所占用的长度,即从第六位开始,第一个n位表示Xmin,第二个n位表示Xmax,依次类推,直到取到存储的4个值,字节未用完的部分补0。
举个例子:
swf的头如下所示:
- 4657 53 0A 4C15 00 00 78 0005 5F 00 00 0F A0
- 0000 12 01 00 4411 18 00 00 00 7F13 04 05 00
开始3个字节为FWS,0A为10,表示版本号,“4C 15 00 00 ”为文件大小,从"78"开始即可读Rect结构。
“78”的二进制代码为:01111000,前5位就是01111,十进制值为15,就是说从第六位开始,每隔15位表示一个swf尺寸值。
“78 00 05 5F 00 00 0F A0”用二进制表示为:
- 01111000000000000000 010101011111000000000000000000 00111110100000
那么000000000000000 十进制为0,表示Xmin,010101011111000十进制值为11000,换算成像素为550,表示Xmax,最后面的00111110100000只有14位,比15位少了一位,所以需要从后面一个字节拿一位过来,后面的字节16进制值为00,二进制值为00000000,被借了一位,那么剩余的7位都废了,即属于补0部分,至此Rect结构就结束了。
之后的00 12表示帧率,由于swf是反序存入的,所以应该按照12 00转换为十进制,即为4608,4608/256=18(因为低8位是小数,所以需要除以2的8次方),swf的帧率即为18.
再之后两位是01 00,反序之后十进制即为1,swf总帧数为1.
本文转自: http://www.cnblogs.com/sevenyuan/archive/2010/04/28/1723189.html
- 解析swf的RECT结构
- swf文件结构解析
- swf文件结构解析
- swf文件结构解析
- SWF文件结构解析
- swf文件结构解析
- swf文件结构解析
- SWF结构解析之DoABC
- RECT 结构
- RECT 结构
- RECT结构
- SWF 文件的主要构成 --- SWF解析学习 笔记(1)
- 关于RECT结构体
- 关于RECT结构体
- GDI与GDI+在RECT结构的区别
- html的swf文件代码解析
- SWF文件结构研究
- SWF文件结构分析
- 数据通信之cjson
- 还是c#的toolstrip简单
- Gesture - Long Press
- C#中数据类型的托管
- 链接过程
- 解析swf的RECT结构
- 给Linux系统/网络管理员准备的Nmap命令的29个实用范例
- PHP Simple HTML DOM解析器使用入门
- 安装完win7+Ubuntu双系统,无法进入Win7,A read disk error occurred问题的解决
- windows窗口样式速查参考
- 编码 统计连续字符串中连续字母的个数。
- shared_ptr使用
- vim配置
- Spring AspectJ注解