【发布时间】:2014-11-28 10:48:52
【问题描述】:
我想解码 ASN.1 标准二进制文件。我已将二进制文件转换为十六进制并将其存储在一个文件中。现在我想将此十六进制转换为 ascii。我现在遇到的问题是如何读取 hex 文件。
文件看起来是这样的, 81 01 32 82 0D 35 31 34 32 34 31 38 38 38 其中 81 是标头,01 是大小,32 是数据。再次 82 是标题,并且继续。 我如何从这个文件中读取并区分存在的各个字段。
我在整个互联网上搜索了这个,但无法得到满意的答案。所以有人可以帮助我前进的道路。我不想要任何代码,只想要我怎么做的过程。
【问题讨论】:
-
使用
fscanf(filepointer, "%d %d %d", &header, &size, &data)一次读取3个字节 -
@Santosh:
%d不读取十六进制。另外,最好只读取标题和大小,然后循环读取数据。 -
是的,我还考虑将数据放入循环中。但不能这样做,因为标头大小并不总是 1 字节(上面的示例有 1 字节的标头,但并不总是相同),如果有多个字节地址,我不能增加 1。
-
和@santosh,你想一次读3个字节吗?查看下一个字段的数据。它有 13 个字节长。
-
为什么要将文件转换为十六进制,然后尝试读取十六进制?为什么不直接使用原始二进制文件?根据此类文件的大小,您可以将整个内容读入
unsigned char数组或逐字节读取。
标签: c