关于DNF的多媒体包NPK文件的那些事儿(4)- NPK文件操作流程

为了编程方便。将NPK文件流分为四个部分。NPK文件解析的时候将流分割成四个部分存入对应的缓冲区;NPK文件修改时对四个部分直接进行物理修改;保存的时候只需要重新串起来就可以了。因此一个NPK对象可以这么定义:逻辑值包括目录(即IMG索引)、IMG个数;物理值包括四个数据流。四个流命名为data1, data2, data3, data4,在对NPK进行读取时不可变,对NPK进行修改时
摘要由CSDN通过智能技术生成

为了编程方便。将NPK文件流分为四个部分。

NPK文件解析的时候将流分割成四个部分存入对应的缓冲区;NPK文件修改时对四个部分直接进行物理修改;保存的时候只需要重新串起来就可以了。

因此一个NPK对象可以这么定义:逻辑值包括目录(即IMG索引)、IMG个数;物理值包括四个数据流。

四个流命名为data1, data2, data3, data4,在对NPK进行读取时不可变,对NPK进行修改时可变,用途如下:

data1:包含NPK头的NeoplePack_Bill字符串以及包含img的个数。定长20字节。

data2:IMG目录,包含IMG的所有索引项。长度为264字节×项数(即data1里img的个数)。

data3:NPK校验位,为data1和data2加起来后前17字节的整数倍的SHA256校验码。定长32字节。

data4:IMG文件数据首尾相接构成的大数据流,占NPK文件的绝大部分。


修改NPK时一般的步骤如下:

1. 先修改逻辑值,即IMG个数以及目录:

若涉及IMG插入与删除操作,则IMG个数相应地增加或减少;

当IMG发生修改或者添加或减少的时候,先将输入IMG索引项的三个参数(偏移量、大小、名字)确定,然后根据内部内容的变化,调整所有索引项内的偏移量。

2. 修改完逻辑值后,根据逻辑值调整物理值:

对data1,若IMG个数变化,则需要重写(或者只修改最后4字节);

对data2,重

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值