gpt4 book ai didi

c - 从C中的图像读取十六进制值

转载 作者:行者123 更新时间:2023-11-30 18:19:46 25 4
gpt4 key购买 nike

我正在尝试使用 C 语言从图像文件中读取十六进制值。在 Linux 中,此代码工作正常,但在 Windows 中,它仅读取前 334 个字节,我不明白为什么。

读取文件的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
void readHexFile(char* path) {
FILE *fp;

if ((fp = fopen (path, "r")) != NULL) {
struct stat st;
stat(path, &st);

int i;
int ch;
for (i = 0; i < st.st_size; i++) {
ch = fgetc(fp);
printf("%x ", ch);
}

fclose(fp);
}
else {
return NULL;
}
}

st.st_size来自<sys/stat.h>包并包含正确的值(图像文件的大小,以字节为单位)

此图像显示了我的程序输出的内容,以及它正在读取的文件的实际二进制内容:

enter image description here正如您在 17 序列之后看到的那样, 18 , 19还有十六进制值,但我的程序打印 ffffffff反复。

最佳答案

您以文本模式打开文件,而不是二进制模式。不同平台的行为可能有所不同。

在这种情况下,Microsoft Windows 决定此纯文本文件在第一次出现 Ctrl+Z 时结束。 ( 0x1A ),并返回 EOF对于所有人fgetc之后。

明确声明您想要以二进制方式打开文件:

fp = fopen ("yourfile", "rb");

问题就消失了。

关于c - 从C中的图像读取十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41876096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com