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

时间:2014-01-09 20:50:22

标签: c linux unix posix mmap

我想将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)中的值保存到地图值中。

早些时候我只是将fputcfopen(FILE,"wb")一起使用,这样做很好,但现在我不能这样做。

有人能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:3)

对于每个像素,您必须将计数器增加3

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

答案 1 :(得分:0)

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

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

确保为地图分配了足够的内存。