pak文件解析工具,由吾爱大神编辑制作,能够解析pak文件,由Python环境制作,使用相应的编辑软件即可加载并解析,另外还附带一个pak的测试解析文件,可以通过代码来进行解析测试效果,有相关pak文件解析工具使用需求的朋友们不妨试试吧!
importos
importstruct
classBinary:
def__init__(self, data: [bytearray, bytes,str]):
self.index=0
ifisinstance(data, bytearray):
self.data=data
elifisinstance(data, bytes):
self.data=bytearray(data)
elifisinstance(data,str):
self.data=bytearray(data.encode(encoding='utf-8'))
else:
raiseTypeError('data type is invalid:', data.__class__.__name__)
self.size=len(self.data)
defread_int8(self)->int:
ret=self.data[self.index]
self.index+=1
returnret
defread_int16(self)->int:
ret,=struct.unpack('h',self.data[self.index:self.index+2])
self.index+=2
returnret
defread_int32(self)->int:
ret,=struct.unpack('i',self.data[self.index:self.index+4])
self.index+=4
returnret
defread_int64(self)->int:
ret,=struct.unpack('q',self.data[self.index:self.index+8])
self.index+=8
returnret
defread_string(self)->str:
pass
defread_bytes(self, size:int)-> bytearray:
ifsize >self.rest():
ret=self.data[self.index:]
self.index+=self.rest()
returnret
ret=self.data[self.index:self.index+size]
self.index+=size
returnret
def__len__(self):
returnlen(self.data)
defrest(self)->int:
returnlen(self.data)-self.index
@staticmethod
defbytes2str(data: [bytearray, bytes]):
out=''
ifdataisNoneorlen(data)==0:
return'Null'
forbindata:
ifout:
out+=','
out+='0x%02X'%b
out+=' '
out+=data.decode('utf-8')
returnout
classPakData:
def__init__(self, br: Binary):
self.version=br.read_int32()
self.count=br.read_int32()
self.coding=br.read_int8()
self.resources=list()
foriinrange(self.count):
item={
'id': br.read_int16(),
'offset': br.read_int32(),
'data': bytearray(),
'size':0
}
self.resources.append(item)
fori, iteminenumerate(self.resources):
ifi+1<self.count:
item['size']=self.resources[i+1]['offset']-item['offset']
else:
item['size']=len(br)-item['offset']
item['data']=br.data[item['offset']:item['offset']+item['size']]
classPakFile:
def__init__(self, path:str):
self.path=path
ifos.path.exists(path):
self.decode()
return
self.data=None
defset_path(self, path):
self.path=path
defdecode(self)->int:
ifos.path.exists(self.path)isFalse:
return-1
withopen(self.path, mode='rb') asfile:
raw=bytearray(file.read())
file.close()
br=Binary(raw)
self.data=PakData(br)
defmain():
pak=PakFile(r'.zh-CN.pak')
ifisinstance(pak.data, PakData):
print('版本:', pak.data.version)
print('数量:', pak.data.count)
print('编码:', pak.data.coding)
foriinrange(pak.data.count):
print('ID:', pak.data.resources[i]['id'])
print('偏移:', pak.data.resources[i]['offset'])
print('大小:', pak.data.resources[i]['size'])
print('内容:', Binary.bytes2str(pak.data.resources[i]['data']))
if__name__=='__main__':
main()
未经书面许可,严禁将本网内容作为AI训练资源。
33台词PC版 0.1
文件批量改名Bulk Rename Utility v3.4.1 中文绿色版
PDF快转(SanPDF) v2.0.6.66 官方版
菲菲更名宝贝之得意非凡FFRenamePro V4.0专业版
查找大文件(WizTree) v3.35 绿色版
文件比较查重工具WinMerge v2.16.8.0 中文版
Windows文件管理器(WinNc) v9.4.0.0 官方安装版
文件压缩档案提取(Explzh) v8.18 官方版
WinMerge v2.16.7.0 官方多语中文版
UltraCompare文件比较工具汉化修正中文版 V21.10.0.20免费64位注册码绿色版
文档自动转换工具BlackIce BiBatchConverter v4.80.632 官方版
批量文本文件处理器 V1.4绿色版
MAXHUB文档客户端 v1.3.1官方PC版
文件校验工具(EF CheckSum Manager) v20.02 官方版
全速pdf转换成excel转换器 v7.8.0.0官方版