我想解码ASN.1标准二进制文件。我已将二进制文件转换为十六进制并将其存储在一个文件中。现在我想将此十六进制转换为ascii。我现在遇到的问题是如何读取hex文件。
文件看起来像这样, 81 01 32 82 0D 35 31 34 32 34 31 38 38 38其中81是标题,01是大小,32是数据。再次82是标题,这继续。 如何从此文件中读取并区分出现的各个字段。
我在互联网上搜索了这个,但无法得到满意的答案。所以有人可以帮助我前进的方向。我不想要任何代码,只想要我能做到的程序。
答案 0 :(得分:0)
我会先读取标题,然后循环读取数据。您可以使用“x”-specifier读取十六进制数字(假设您的文件名为hexfile.txt
):
#include <stdio.h>
int main ()
{
FILE *stream;
unsigned int h, l, d;
if( (stream = fopen( "hexfile.txt", "r" )) == NULL ) return 1;
while (EOF != fscanf (stream, " %x %x", &h, &l))
{
printf ("%02X %02X\n",h,l);
for (unsigned i=0; i<l; ++i)
{
if (EOF == fscanf (stream, " %x", &d)) break;
printf ("%02X ",d);
}
puts ("");
}
fclose (stream);
return 0;
}