2015-08-13 86 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到长 –