如果你有一个支持按字节剪切的十六进制编辑器,就可以手工分离HuR了。方法如下:
首先你要知道这个HuR中数据的长度。一般HuR的分卷大小为950KB,就是950*1024=972800B。可是最后一卷的大小怎么确定呢?
我们把文件指针跳转到倒数第24字节的位置(从文件开头起第L-24个字节,L是整个文件的长度),然后向后读取4字节,读出来的就是HuR的大小了,它是十六进制无符号整数(小尾)。比如,我们读到了BF 3A 21 58,怎么把它转换为10进制呢?
1.颠倒字节序。手机和电脑的CPU都是一群奇怪的家伙,都是倒着处理数据的,所以这个数也是倒的。我们为了看明白,得把它颠倒过来,变成58 21 3A BF。
2.每位乘权值,得到结果。
A~F=10~15,这个大家都知道吧。
所以58 21 3A BF = 15*16^0 + 11*16^1 + 10*16^2 + 3*16^3 + 1*16^4 + 2*16^5 + 8*16^6 + 5*16^7 = ……
16^3就是16的3次方=16*16*16
16^0=1
慢慢算吧,呵呵。
假设算得的结果是N,那么数据开始的位置就是从文件末尾开始倒数24+N个字节的位置(如果从文件开头算起,就是第L-24-N个字节,L是整个文件的长度),数据的长度就是N。
现在我们可以剪切了。
剪切好后再把各分卷的数据合并,我们就得到了一个完整的文件:)
希望有人可以把它变成程序:)
注:在php中可以用unpack('V',$$int);得到十进制数(不要颠倒字节序,返回的是数组)
在C语言中,用指针指向那四字节(不要颠倒字节序),然后把指针类型改成 无符号长整型(mrp SDK里用uint32,原始的定义关键字自己查)就得到整数了。java和Python中也有unpack()
备注:有的十六进制编辑器(如eHex2.mrp)带进制转换功能,只要颠倒字节序后输入进制转换器就可以知道分卷的大小了。

























