将二进制数写入bmp图像

时间:2013-03-20 17:31:08

标签: visual-c++

我读了一个bmp图像并存储在字符串向量之后 将char转换为数字和二进制数:

typedef unsigned char BYTE;
std::streampos fileSize;
std::vector<BYTE> readFile(const char* filename)
{
    // open the file:

    std::ifstream file(filename, std::ios::binary);

    // get its size:
    file.seekg(0, std::ios::end);
    fileSize = file.tellg();
    file.seekg(0, std::ios::beg);

    // read the data:
    std::vector<BYTE> fileData(fileSize);
    file.read((char*) &fileData[0], fileSize);
    return fileData;
}

现在这很好,但我希望在转换后重写bmp文件  将每个二进制数转换为char并将其存储在新文件中。

ofstream saveFile(path);
int i=0; string str="";
while(i<binary.size())  //the binary_size is a string that contain all binary number of bmp
    {
    str=BinartToInt(binary[i]);//BinartToInt is a function that convert 8bit binary to number
    saveFile <<str;
    i++;
    }

saveFile.close();

如何将矢量二进制字符串转换为BMP?

2 个答案:

答案 0 :(得分:0)

确保输出流也标记为二进制,否则行结尾和其他文本处理将对二进制流生效。

ofstream saveFile(path, std::ios::binary);

答案 1 :(得分:0)

您无法使用格式化输出功能将数据写入二进制格式文件。使用saveFile.write()