将文件中的HEX数据转换为ascii

时间:2014-11-28 10:48:53

标签: c

我想解码ASN.1标准二进制文件。我已将二进制文件转换为十六进制并将其存储在一个文件中。现在我想将此十六进制转换为ascii。我现在遇到的问题是如何读取hex文件。

文件看起来像这样, 81 01 32 82 0D 35 31 34 32 34 31 38 38 38其中81是标题,01是大小,32是数据。再次82是标题,这继续。 如何从此文件中读取并区分出现的各个字段

我在互联网上搜索了这个,但无法得到满意的答案。所以有人可以帮助我前进的方向。我不想要任何代码,只想要我能做到的程序。

1 个答案:

答案 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;
}