2015-08-13 99 views
0

的問題是不是英文的,所以這是我的翻譯:澄清 - Java的

經常出現這樣的遊戲創建資源包。它們是一個大型的二進制文件,由TOC(目錄)和不間斷編寫的遊戲資源組成。製作一個讀取這種資源包的程序,並從中提取文件,同時保持目錄結構。

這裏是一個資源包的例子:

/// 

/// Header 

/// 

DWORD: Header      //BNDL 

DWORD: Version     //0x02 

ULONG: TOC size    // 

/// 

/// TOC markers 

/// 

byte: 

01 - file name (zero terminated string). If the string 
starts with char 0x01, then it is a directory 

02 - file info (ulong - offset from beginning of the file, 

DWORD – file size in bytes) 

03 - move to parent directory 

00000010 0101 6461 7461 0001 0161 6E69 6D73 0001 ..data...anims.. 

00000020 0167 686F 7374 0002 FCBD 1C02 0000 0000 .ghost.......... 

00000030 823D 7000 0167 686F 7374 5F6D 6163 6869 .=p..ghost_machi 

00000040 6E65 2E78 6D62 00                        ne.xmb.          

string     filename = data/anims/ghost/ghost_machine.xmb 

ulong      offset = 0x00000000021cbdfc 

DWORD      filesize = 0x000703D82 

------------------------------------------------------ 

000001C5 0301 0167 7569 0002 308A 2E01 0000 0000 ...gui..0....... 

000001D5 52D7 0200 0161 6C65 7274 2E78 6D62 00    R....alert.xmb.  

0301 0167 7569 00 - go to the parent directory and enter 

directory 「gui」 

string     filename = data/gui/alert.xmb 

ulong      offset = 0x012E8A30 

DWORD      filesize = 0x0002D752 

其中:

ulong (8 byte) = long 

DWORD (4 byte) = int 

我明白,我必須做一些提取,但無法得到的東西威騰背後的意義在文件中。示例中顯示的文字是什麼?

+0

你試過了什麼?我建議你開始閱讀Bundle數據,然後找到告訴你其他文件位於哪裏的線...... –

回答

1

該文件內容包括數據的0和1

首先,你必須HEADER - 這是4個字節...每個字節產生一個字符 - 值被設置爲例如BNDL 4個字節

看到用於保存字符有什麼數字:https://en.wikipedia.org/wiki/ASCII?ASCII_control_code_chart#ASCII_printable_code_chart

其次是版本字符串:0×02

,然後8字節長的整數,它說有多少字節遵循

接下來我們有數據的例子!看看有沒有01 - 這意味着新的文件或文件夾,如果我們有02,我們有一些文件信息,當我們有03 - 這意味着我們移動到父。這描述了保存所有文件的文件夾結構(在此文件中)。

00000010 0101 6461 7461 0001 0161 6E69 6D73 0001 ..data...anims.. 這條線表示,這些數據在第16位(00000010十六進制)開始,在字節的數據是:010164617461000101616E696D730001十六進制 - 這意味着每一對數字形式的一個字節,然後我們看到..data。 ..anims ..它向我們展示了任何可讀的字符(以及任何不可讀的點)

ps。希望這個澄清一些基本知識,詢問是否有什麼不夠清楚

+0

因此,當從文件中讀取時,我應該閱讀大小long和int? – user3719857

+0

也可以澄清第二個文件。謝謝:) – user3719857

+1

@ user3719857那麼,簡短的回答:DWORD對應於int和ulong到長 –