好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

游戏中的Pak文件解析.docx

22页
  • 卖家[上传人]:ji****72
  • 文档编号:38034113
  • 上传时间:2018-04-26
  • 文档格式:DOCX
  • 文档大小:45.43KB
  • / 22 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Pak 文件的结构pak 文件就是将多个文件打包为一个单独文件,在这个文件中保存着多个文件的数据,当然还有一些描述文件结构的数据所以将“Pak”作为文件的后缀是一种常规的用法,可以自定义其它的文件后缀使用 Pak 方法将程序中要用到的资源(图片、音乐、文本)组合为单一文件是一个安全有效的方法 由于 MIDP 对 j2me 程序大小有限制,所以缩小发布程序就意味着能够提供更多的程序或者内容(如图片、音乐)给用户因为 zip/jar 算法对大文件的压缩率高于对等量的多个小文件的压缩率,所以先把多个小文件按一定结构组合成一个 pak 文件,再压缩成 jar 包,有助于减少程序容量同时可以在 pak 文件中对文件数据进行加密,可以保护作者权益可以自行设计 Pak 文件结构,下面是一个参考例子:同样的可以把 Java me 平台上的 pak 文件使用方法修改扩展应用到其他平台上,如Android/OPhone,wm 等PAK File Header:Pak 文件的头部* 签名:6 字节 char 数组 * 版本号:32 位 float * 文件 table 数量:32 位整数 * 密码行为:8 位字节 * 密码:8 位字节 * 文件唯一 ID:10 字节 char 数组 * 保留位:32 位整数(4 字节)File Table:Pak 文件中包含文件的列表,在一个 Pak 文件中一个被包含的文件对应一个 File Table。

      文件名:30 字节 char 数组 * 文件大小:32 位整型 * 文件在 pak 文件中的位移:32位整数Concatenated File Data:按 File Table 的顺序连接在一起的文件数据 文件数据四、程序框架:1PakHeader 类,定义了 Pak 文件头PakFileTable 类,定义 Pak 文件 tablePakUtil 类(J2SE 版),具备两个功能:将多个 png 图片合成一个 Pak 文件,并使用简单的加减加密法对其进行加密;从 Pak 文件中取出 png 图片,构造 byte 数组(可以用来构造 Image 对象)或者写为文件PakUtil 类(j2me 版),具备的功能:从 Pak 文件中取出 png 图片,构造 byte 数组(可以用来构造 Image 对象)可自行设计实现程序,特别是关键的加密算法以下为参考代码:五五、、PakHeader 和和 PakFileTable 类类:PakHeader.java:package cn.org.matrix.gmatrix.gameLab.util.pak;/** * Pak 文件头: * 结构: *签名:6 字节 char 数组 * 版本号:32 位 float *文件 table 数量:32 位整数 *密码行为:8 位字节 * 密码:8 位字节 *文件唯一 ID:10 字节 char 数组 *保留位:32 位整数(4 字节) * @author cleverpig * */class PakHeader {//定义文件唯一 ID 长度public static final int UNIQUEID_LENGTH=10;//定义文件签名长度public static final int SIGNATURE_LENGTH=6;//定义加法运算public static final int ADDITION_CIPHERACTION=0;//定义减法运算public static final int SUBTRACT_CIHOERACTION=1;//文件签名private char[] signature=new char[SIGNATURE_LENGTH];//版本号private float version=0f;//文件 table 数量private long numFileTableEntries=0;//密码使用方法:在原数据上进行加法还是减法private byte cipherAction=ADDITION_CIPHERACTION;//密码值private byte cipherValue=0x00;//唯一 IDprivate char[] uniqueID=new char[UNIQUEID_LENGTH];//保留的 4 字节private long reserved=0;public PakHeader()/*** 构造方法* @param signature 签名* @param version 版本* @param numFileTableEntries 文件 table 数量* @param cipherAction 密码使用方法* @param cipherValue 密码值* @param uniqueID 唯一 ID* @param reserved 保留的 2 字节*/public PakHeader(char[] signature,float version,long numFileTableEntries,byte cipherAction,byte cipherValue,char[] uniqueID,long reserved){for(int i=0;i

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.