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 01111101000000 00000000000000 01011101110000 000
14                        0                      8000                       0                         6000
因爲Flash的座標是TWIP格式的,需要除以20的,所以實際爲(0,400,0,300)
接下來的兩字節 (00 0C):表示幀速率,前一字節表示小數位,後一字節表示整數位,不過一般極少有小數位的幀率,所以一般我們只計整數就可以了,這裏 $0C = 12,即每秒12幀

再接下來的兩字節 (9F 03):表示總幀數,WORD類型,$039F=927幀.

發佈了44 篇原創文章 · 獲贊 25 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章