2016-04-01 12 views
0

Ich schreibe ein C++ - Programm, wo ich einige String-Ausgabe, die im Grunde im HEX-Format ist, konvertieren muss. Dieser Ausgabe-String beginnt mit FFD8 und endet mit FFD9, was im Grunde ein JPEG-Bild ist.Hex zu JPG Konvertierung in C++

Jetzt möchte ich die JPEG-Datei von dieser Zeichenfolge-Ausgabe abrufen, aber ich möchte diese Zeichenfolge nicht in einer Textdatei speichern und im ios :: binary-Modus öffnen und dann in eine JPEG-Datei konvertieren.

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

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

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

Wie kann ich das tun, ohne meine String-Ausgabe in einer Datei zu speichern?

Vielen Dank im Voraus!

+0

Sie müssen genauer über das Format der Zeichenfolge sein. Ist es nur eine JPEG-Datei im Text? – Dan

Antwort

0

Meine Annahme ist, dass Sie eine Zeichenfolge haben, die hex darstellt, und Sie das in das Byte-Äquivalent konvertieren möchten.

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

Dies ist ein Code ich eine Weile zurück in C geschrieben, die ein Zeichen nimmt und wandelt es in ein Byte. Sie können es anpassen, wie Sie es brauchen.

Wie es funktioniert:

  • Hex-Werte dargestellt werden durch 0-15
  • Wenn Sie ein Zeichen erhalten, dass eine Zahl ist, z '0', subtrahieren Sie '0'. Das Ergebnis ist 0
  • Wenn Sie einen Buchstaben erhalten, sagen Sie "a", stellen Sie sicher, dass es Großbuchstaben ist. 'A' - 'A' ist 0. Der Hexadezimalwert von 'A' ist 10, also müssen wir 10 addieren, um seinen Hexwert zu erhalten.