C++中的十六进制到JPG的转换
Hex to JPG conversion in C++
我正在写一个C++程序,需要转换一些基本上是HEX格式的字符串输出。该输出字符串以FFD8开始,以FFD9结束,FFD9基本上是JPEG图像。
现在,我想从该字符串输出中获取JPEG文件,但我不想将该字符串输出保存在文本文件中,然后在ios:binary模式下打开它,然后将其转换为JPEG文件。
std::string output; //which is FFD8..........FFD9
//******some code*******???
ofstream imageFile;
imageFile.open('Image.jpg');
imageFile<< output;
如何在不将字符串输出保存在文件中的情况下做到这一点?
提前感谢!
我的假设是,您有一个表示十六进制的字符串,并且您希望将其转换为等效的字节。
byte hexCharToByte(const char h){
if(isdigit(h))
return h - '0';
else
return toupper(h) - 'A' + 10;
}
这是我不久前在C中写的一些代码,它接受一个字符并将其转换为一个字节。你可以根据需要进行调整。
工作原理:
- 十六进制值由0-15表示
- 如果您收到一个数字字符,例如"0",则减去"0"。结果为0
- 如果你收到一封信,说"a",确保它是大写的A'-'A'为0。"A"的十六进制值是10,所以我们必须加10才能得到其十六进制值
std::string output; //which is FFD8..........FFD9
int main()
{
std::ofstream thum("name.jpg", std::ios_base::binary | std::ios_base::out);
char buf[3];
buf[2] = 0;
std::stringstream in(output);
in.flags(std::ios_base::hex);
while (in)
{
in >> buf[0] >> buf[1];
long val = strtol(buf, nullptr, 16);
thum << static_cast<unsigned char>(val & 0xFF);
}
}
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 如何在c++中将image.jpg转换为image.ppm
- 将图像.jpg转换为 Base64
- 如何在 Windows 8 上的 C++ 中将.jpg转换为.png
- 在Qt中使用将pdf图像转换为jpg图像
- 在OpenCV中不使用CvSaveImage将Mat图像转换为JPG
- C++中的十六进制到JPG的转换
- GDI+ - 将位图像素转换为 JPG 格式
- 如何将unsigned char*转换为图像文件(如jpg)在c++中
- 如何将运动jpeg帧从ip摄像机(rtp流)转换为有效的jpg图像
- 如何在cpp中将JPG图像转换为PGM格式