Rover12421's Blog

The End.

Rsc数据打包结构

        一个项目里用到了字符串数据资源包,本来简单的写了一个字符串打包的命令行工具,后来同事说太简单了,要考虑到以后打包的需求,于是简单的讨论一番,把结构定了下来。

      至于项目名字Rsc,是由我随意定的,因为这个小工具得我一个人完全开发,随意性还是比较大的,名字无含义,呵呵。

Rsc1

      这是我画的一张资源包的结构图, 基本由4大块组成,文件头、索引区段、宏区段、数据区段。

Rsc2

      玫瑰红区域属于FileHeader文件头区域,浅绿区域是IndexSegment索引区段,青绿区域是MacroSegment宏区段,酸橙色和鲜绿色都属于DataSegment数据区段,只是两种颜色分别代表两种不同的数据类型。

      图中表格里的名字后面都跟了一个小括号,表示字节大小,"?“表示不定长,"4"表示4字节。

      如果图看不的太明白,结合下我写的结构和结构说明应该能明白了。

01 typedef struct
02 {
03     int MajorVersion;                        //主版本号
04     int MinorVersion;                        //次版本号
05 }RSC_Version;            //版本号
06
07 typedef struct
08 {
09     int indexSegmentOffset;                  //索引区段偏移位置
10     int macroSegmentOffset;                  //宏区段偏移位置
11     int dataSegmentOffset;                   //数据区段偏移位置
12 }RSC_SegmentOffset;        //区段索引
13
14 typedef struct
15 {
16     unsigned char FileFlag[5];        //文件类型标识,最多4个char字符
17     RSC_Version version;                     //版本号
18     RSC_SegmentOffset SegmentOffset;         //区段偏移
19 }RSC_FileHeader;           //文件头
20
21 typedef struct
22 {
23     int index;                                //索引号
24     int macroIndexOffset;                     //宏索引偏移
25     int dataIndexOffset;                      //数据索引偏移
26 }RSC_IndexOffset;          //索引单元结构
27
28 typedef struct
29 {
30     int macroLenght;                         //宏长度
31     unsigned char* macro;                    //宏
32 }RSC_Macro;                //宏单元结构
33
34 typedef struct
35 {
36     int type;                                //字符串类型
37     int dataLen;                             //字符串数据长度
38     unsigned char* data;                     //字符串数据
39 }SRC_String;              //字符串数据单元结构
40
41 typedef struct
42 {
43     int type;                                //图片类型
44     int wide;                                //图片宽
45     int height;                              //图片高
46     int dataLen;                             //图片数据长度
47     unsigned char* data;                     //图片数据
48 }SRC_Image;              //图像数据单元结构

Comments