2016-04-01 106 views
0

我正在寫一個C++程序,我需要轉換一些基本上是十六進制格式的字符串輸出。該輸出字符串以FFD8開頭,結束於基本爲JPEG圖像的FFD9。十六進制到C++的JPG轉換

現在,我想從該字符串輸出中獲取JPEG文件,但我不想將該字符串輸出保存在文本文件中,並以ios :: binary模式將其打開,然後將其轉換爲JPEG文件。

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

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

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

我怎麼能做到這一點,而不保存我的字符串輸出在文件中?

在此先感謝!

+0

您必須對字符串的格式更加具體。它只是一個文本中的JPEG文件? – Dan

回答

0

我的假設是你有一個表示十六進制的字符串,並且你想把它轉換成等價的字節。

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才能得到它的十六進制值。