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

标签 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)保存到 map 值中。

之前我只是将 fputcfopen(FILE,"wb") 一起使用,一切都很好,但现在我不能这样做了。

谁能告诉我该怎么做?

最佳答案

您必须为每个像素将计数器递增 3:

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

关于c - 将整数值作为字节值保存在 ansi c 的 char 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21030811/

相关文章:

c - makefile 的所有部分中的变量和函数在读取时都会展开

linux - 如何将文件权限授予组中的特定用户?

python - 从 Python 2 环境打开 Spyder 仍然在 Spyder 中运行 Python 3

c - 使用 ipcrm 删除共享内存 linux

linux - 大括号扩展 - 表达式太多

socket.io 的 C 客户端

c++ - 如何将多个包裹一起寄送?

c - 如何删除所有可能的二叉树节点?

arrays - 从 bash 输出 bash 引用数组

svn - 可以 svn 导出并包含未版本控制的文件吗?