【发布时间】:2014-09-04 21:12:41
【问题描述】:
我希望编写一个 C 程序来读取存储在文件中的 1 字节十六进制值。我浏览了包括 StackOverflow 在内的互联网,但我的要求似乎与平均水平不同:
我有一个包含以下内容的文本文件 - 它们是单字节十六进制值:
35 36 37 38
十进制即:
53, 54, 55, 56
十六进制值是以下 ASCII 字符
5 6 7 8
我想从包含 ASCII 35 36 37 38 四个十六进制字节的文本文件中读取它。我一直在修改FILE 指针和fread(),但它读取35 值,例如3 和5,它作为33 35 存储在缓冲区中(3 的十六进制和5 单独)。所以我的问题是......
短版:
有没有办法一次读取两个 ASCII 字符的文件(不是一次读取两个字节,因为那样会产生不同的结果!)。也许我应该读成一个字符?与其提供一些代码并声明它不像 SO 上通常发生的那样工作,我不确定如何从这个开始,所以我没有代码可以提供。您不必为我编写代码,但有关如何处理问题场景的一些指导会很好。
【问题讨论】:
-
空格呢?
-
像你这样的人应该知道分数 - 你需要写一些代码让我们评论/修复它。
-
@EdHeal - 为什么必须发布代码? StackOverflow 上是否禁止谈论如何解决编程问题?能不能不讨论问题的逻辑,甚至伪代码?
-
fscanf(fp, "%x", &h)...printf("%c ", (char)h); -
@KerrekSB - 关于空间的好点,我想忽略它们,我会更新帖子。关于“有没有办法” - 我也应该更清楚一点,我的意思是
is there a way that doesn't involve some really obscure or non-constructive code like casting to an int which is cast to base 16 and then cast to a popsicle and then printed from printf() into cout()