首页 文章

将整数值保存为ansi c中char的字节值

提问于
浏览
1

我想将ppm文件保存为P6 . 这意味着只有字节 . 另外我想以并行方式保存它,所以这就是我使用 mmap 来映射内存的原因 .

这是我试图保存所有内容的代码的一部分:

char* map;
        //...    
        int offset = sprintf(map,"P6\n%d %d\n%d\n",x,y,k);
        int counter = offset;

        for(i = 0; i < x; i++)
            {
                   for(j = 0; j < y; j++)
                   {
                        map[counter] = outputRed[i][j];
                        map[counter+1] = outputGreen[i][j];
                        map[counter+2] = outputBlue[i][j];
                        counter++;
                   }
            }

问题是我无法将红色,绿色和蓝色数组(都是int)中的值保存到 Map 值中 .

早些时候,我只是简单地使用 fputcfopen(FILE,"wb") 这样做的一切都很好,但现在我不能这样做 .

有人能告诉我怎么做吗?

2 回答

  • 3

    您必须为每个像素增加 3 的计数器:

    map[counter] = outputRed[i][j];
    map[counter+1] = outputGreen[i][j];
    map[counter+2] = outputBlue[i][j];
    counter += 3;
    
  • 0

    复制每个像素的数据后,可以递增计数器 . 这可能更容易理解 .

    map[counter++] = outputRed[i][j];
    map[counter++] = outputGreen[i][j];
    map[counter++] = outputBlue[i][j];
    

    确保为 Map 分配了足够的内存 .

相关问题