gpt4 book ai didi

c - 读取二进制数据C(open,read)

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:45 26 4
gpt4 key购买 nike

我正在尝试使用 C 中的 read()open() 读取一个 png 文件,但我得到的只是损坏的数据。这是我的代码:

int  r;
int fd;
char buff[4097];

fd = open("image.png", O_RDONLY);
while ((r = read(fd, buff, 4096)) > 0)
{
buff[r] = '\0';
printf("%s", buff);
}
close(fd);

前 8-10 个字节相同,然后数据已损坏,与原始图像完全不匹配。感谢您的帮助

最佳答案

人们不应该期望能够读取二进制文件并将其打印为字符串。为了查看文件中的实际内容,将其打印为更适合二进制格式的内容 - 例如,十六进制:

int i = 0;
while ((r = read(fd, buff, 4096)) > 0) {
for (int j = 0 ; j != r ; j++ ) {
printf("%02x ", buff[j]);
if (i % 16 == 0) {
printf("\n");
}
i++;
}
}
printf("\n");

请注意,此代码只是从您的图像文件中获取原始字节,而不会对它进行任何解释。您的文件也可能被压缩,因此尝试解释它可能是一项复杂的任务。

关于c - 读取二进制数据C(open,read),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536225/

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