gpt4 book ai didi

c: 如何正确地将 BMP 文件中的值打印为另一个文件中的 int

转载 作者:行者123 更新时间:2023-11-30 17:25:26 32 4
gpt4 key购买 nike

系统信息:

ravi@ubuntu:~/Desktop/File$ uname -a Linux ubuntu 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013 i686 i686 i386 GNU/Linux

我正在尝试将 BMP 文件 (im.bmp) 的前 2000 个值以十进制格式复制到另一个文件 (new.txt) 中。但是通过以下代码,我只能获取文本文件中写入的字符中的值:

BMfK^@^@^@^@^@^@6^D^@^@(^@^@^@�^@^@^@�^@^@^@^A^@^H^@^@^@^@^@0G^@^@�^N^@^@�^N^@^@$

这是我的代码:

#include<stdio.h>
int main()
{
FILE *fp,*fw;
int i;
unsigned char buffer[10000];
fp=fopen("im.bmp","rb");
fseek(fp,0,SEEK_SET);
fread(buffer,2000,4,fp);
for(i=0;i<2000;i++)
{
printf("%d\n",buffer[i]);
}

fw=fopen("new.txt","w+");
if(fw==NULL)

{

printf("Error opening file\n");
}


int byteswritten;
byteswritten=fwrite(&buffer[0],sizeof(int),2000,fw);
printf("%d\n",byteswritten);


fclose(fw);
fclose(fp);

return(0);
}

现在使用 fprintf() 但仍然得到相同的结果

#include<stdio.h>
int main()
{
FILE *fp,*fw;
int i;
unsigned char buffer[10000];
fp=fopen("im.bmp","rb");
fseek(fp,0,SEEK_SET);
fread(buffer,2000,4,fp);
for(i=0;i<2000;i++)
{
printf("%d\n",buffer[i]);
}

fw=fopen("new.txt","w+");
if(fw==NULL)

{

printf("Error opening file\n");
}


int byteswritten;
//byteswritten=fwrite(&buffer[0],sizeof(int),2000,fw);
byteswritten=fprintf(fw,buffer,"%d");
printf("%d\n",byteswritten);


fclose(fw);
fclose(fp);

return(0);
}

那么如何将值打印为 int 例如42 将被打印为 66(而不是这里的 B),4d 将被打印为 77(而不是这里的 M),并且对下一个值执行类似的操作

最佳答案

正如fread()读取二进制值一样,fwrite()写入二进制值。您需要使用 fprintf() 来打印格式化文本值。

关于c: 如何正确地将 BMP 文件中的值打印为另一个文件中的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075871/

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