请教大神们这种情况如何用parser截取二进制流并保存?
vf吧
全部回复
仅看楼主
level 1
紫魚醬 楼主
本人完全没接触过编程,瞎研究一篇文章实在摸不着头脑了,所以请教一下各位大大。
是这样的,有一些zpk文件我需要解析,我用Beyond Compare查看其16进制代码,通过代码可以看到一个zpk文件里面包含一个png 一个jpg 一个aac音频 一个mp3音频(其中的图片音频代码也是按照下图这个顺序来,但但是每个zpk中的音频图片顺序不一样)。截图如下
可以根据mp3 jpg等文件头和尾 推测出其中音频和图片的代码 复制粘贴保存后即可。
但是问题来了,由于这些zpk文件较多,而且每个zpk中的音频图片顺序不一样,
那么如何写一个parser来自动截取并保存对应的代码呢?
希望大家提供一下思路,谢谢
2017年02月02日 06点02分 1
level 1
紫魚醬 楼主
文章中说:只要记住每一个文件的头尾标识,然后按照这个zpk后面给出的jpg mp3等顺序来解析单个二进制段,就可以了。并且作者给出了parser的一部分代码,大神们请看一下其他的部分应该怎么补充怎么写呢?
switch (arrType[i])
{
case zpk_mp3:
pHeader = mp3Header;
pEnd = mp3Header2;
break;
case zpk_png:
pHeader = pngHeader;
pEnd = pngEnd;
break;
case zpk_jpg:
pHeader = jpgHeader;
pEnd = jpgEnd;
break;
case zpk_aac:
pHeader = aacHeader;
pEnd = NULL;
break;
default:
break;
}
现在面临的问题是不知道怎么写,没有思路
其中 已知jpg png 的文件头文件尾,已知aac的文件头但是文件尾不固定,mp3的文件头文件尾都不固定,头有时候是FF F1有时候是FF E3
2017年02月03日 03点02分 5
level 3
不清楚楼主是截取16进制部分(图片左)还是ASC码(图片右)。
如果是需要左,需要这样:
分析.mp3在16进制是什么字符,比如65 73 ,然后把其它需要的扩展名的16进制分析出来,因为16进制名称它是固定的。
然后将16进制导出为文本文件。
将此文本文件用at()函数定位65 73,如果遇到其它类型的16进制字符了,就定位结束。
这样就知道起始位置和结束位置,然后用截取函数SUBS截取即可。
关键的问题是上述方法是完全可行的,但是导出为文本需要楼主再想办法。
网上有VF读取文件为16进制的文本方法或读取二进制方法,但我没试验成功过。
仅作参考。
VF要想处理,至少要搞成文本。
2017年02月03日 09点02分 7
好的,谢谢你!我在研究研究
2017年02月05日 05点02分
1