这是一个奇怪的问题,一直困扰着我。
该程序是用 C89 编写的,它一次将文件读入 char* 数组 16 个字节(使用 fread 和 sizeof(char) 的大小)。该文件使用“rb”标志打开。然后将该数组传递给一个函数,该函数基本上采用 16 个十六进制值并将其粘贴到一个字符串中,每个值由一个空格分隔。
这就是奇怪的地方。该函数为我拥有的文本文件输入生成一个很好的十六进制转储,一次 16 个字节。但是如果我在一个小的位图图像上尝试它会搞砸——我最终会在字符串中输出 ffffff88 而不是 88。
使用 sprintf("%02x ", input[i]); 将十六进制值放入输出字符串中。在一个循环中。
为什么这适用于某些文件而不适用于其他文件?