C ++中的十六进制到JPG转换

时间:2016-04-01 16:46:05

标签: c++ hex jpeg binaryfiles

我正在编写一个C ++程序,我需要转换一些基本上是HEX格式的字符串输出。此输出字符串以FFD8开头,结束时以FFD9开头,基本上是JPEG图像。

现在,我想从该字符串输出中获取JPEG文件,但我不想将该字符串输出保存在文本文件中,并以ios :: binary模式打开它,然后将其转换为JPEG文件。

std::string output; //which is FFD8..........FFD9

//******some code*******???

ofstream imageFile;
imageFile.open('Image.jpg');
imageFile<< output;

如果不将我的字符串输出保存在文件中,我该怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我的假设是你有一个代表十六进制的字符串,你想将其转换为等效的字节。

byte hexCharToByte(const char h){
    if(isdigit(h))
        return h - '0';
    else
        return toupper(h) - 'A' + 10;
}

这是我在C中写的一些代码,它接受一个char并将其转换为一个字节。您可以根据需要进行调整。

工作原理:

  • 十六进制值由0-15
  • 表示
  • 如果您收到的是一个号码,例如'0',你减去'0'。结果是0
  • 如果收到一封信,说'a',请确保它是大写的。 'A' - 'A'为0.'A'的十六进制值为10,所以我们必须加10才能得到它的十六进制值。