我正在尝试从 PPM 文件中读取像素数据。我有一个读取标题的功能,所以我知道它指向像素数据的开头。我尝试使用 fgetc(file) 但如果该值超过一位,它将不起作用。我还尝试使用数组并将数组转换为 int 或 char,但我无法知道每个值有多少位数。我也不确定这些值是否由空格分隔。基本上我需要一种方法来提取像素数据。(我正在使用 C。)
我现在的代码是:
char read_byte(FILE *ipt) {
int c, i=0, sum=0;
while (i<16) {
c=fgetc(ipt);
if((i%2)!=0 {
if(c&1) {
sum+=pow(2,i/2);
}
}
i++;
}
return (char)sum;
}
编辑:起初我以为文件存储为 ASCII 值,然后我意识到它存储为二进制。现在我想我让它像十六进制一样。我不确定这是否正确。我真的被困住了。
编辑:稍微改变了我的代码
char read_byte(FILE *ipt) {
int c, i=0, sum=0;
while(i<8) {
c = fgetc(ipt);
c=c&1;
sum+=c*pow(2,i);
i++;
}
return sum;
}
我将总和打印为 %c