RAR的所有数值存放都将使用小端序模式,通常使用的编辑器都是大端序的,在查看的时候需要特别注意!!
RAR5的宏观构造如下:RAR5文件头(0x526172211A070100)+
主归档头
文件信息
RAR5文件结尾(0x1D77565103050400)
当然这里还有额外的字段,这里就不展示了,详细的可以查看官方文档:
动态大小
RAR5的大部分参数数据占用的块大小是不固定的,需要通过标志位判断数值占用的位数。同时这样也能尽可能的减少文件的占用。
这里就来介绍一下动态大小类型,vint。
vint的大小占用在1~10bytes之间,通过第8位来进行判断,0为截止标识,1为延续标识。
同时vint表示的大小最多为64位整数,可以使用10bytes来表示。
这里举一个例子来说明vint是如何计算数值的:0x9A10:
因为使用的是小端序模式,所以首先我们需要更换一下两个数据的位置,它就变成了0x109A,然后我们需要再转换为二进制b0001 0000 1001 1010。
这里我们去掉延续标志位和空余位,那么其结果也就是b1000 1001 1010,换算成十六进制也就是0x81A。
大致过程可以看下图:
通用归档