String in Hex wandeln!!
-
Hi Maedels,
habe mal 'ne vielleicht merkwuerdige Frage.
Ihr werdet bestimmt fragen warum ich folgendes ueberhaupt machen moechte:Ich habe einen String indem immer 2 aufeinanderfolgende Zeichen in der Realitaet nur 1 Zeichen sind.
Ich habe zuvor 1 binaer ausgelesenes Zeichen (Bitmap) in einen String umwandeln muessen um es in einer Textdatei verschicken zu koennen.
Nun habe ich es zuvor in Hex umgewandelt um dann die 2 Stellen (z.B. FF welches einen Buchstaben darstellt) als 2 Buchstaben in einen String zu packen.
So habe ich zwar eine Textdatei die doppelt so gross ist wie das Bitmap selbst, aber immerhin eine Textdatei.
Nun moechte ich diese Textdatei wieder zurueckwandeln.Also Bsp.: "8FFF91DF9E" -> 8F FF 91 DF 9E
MEINE FRAGE: Wie mache ich aus 2 Zeichen meines Strings einen Hexwert
Gruss
Guenni
-
ANTWORT:
void CTeilerDlg::OnButton3() //ENTZIPPEN!! { FILE *gezippteDateiLesen; gezippteDateiLesen = fopen("\\gezippte.txt", "rb"); int neueDateigroesse = 0, neuwert = 0; fseek (gezippteDateiLesen,0,SEEK_END); neueDateigroesse = ftell (gezippteDateiLesen); fseek (gezippteDateiLesen,0,SEEK_SET); char *Buffer = new char[neueDateigroesse]; neuwert = fread(Buffer, 1,neueDateigroesse,gezippteDateiLesen); fclose (gezippteDateiLesen); CString hilf2=""; int hexwert = 0; int zaehlhilf = 0; char hilf3; Byte *irgendwas= (unsigned char*)Buffer; for (int x=0; x<neueDateigroesse; x+=2) { if(isdigit((int)Buffer[x])) { hexwert = ((int)Buffer[x]-48)*16; } else { switch (Buffer[x]) { case 'A': hexwert = 160; break; case 'B': hexwert = 176; break; case 'C': hexwert = 192; break; case 'D': hexwert = 208; break; case 'E': hexwert = 224; break; case 'F': hexwert = 240; break; } } if(isdigit((int)Buffer[x+1])) { hexwert += ((int)Buffer[x+1]-48); } else { switch (Buffer[x+1]) { case 'A': hexwert += 10; break; case 'B': hexwert += 11; break; case 'C': hexwert += 12; break; case 'D': hexwert += 13; break; case 'E': hexwert += 14; break; case 'F': hexwert += 15; break; } } hilf3 = hexwert; Buffer[zaehlhilf] = hilf3; zaehlhilf++; } m_test = Buffer; m_anz = hexwert; UpdateData(false); Byte *neu = new Byte[100000]; uLong neuLen= 100000, irgendwasLen= neueDateigroesse; neuLen= test_large_inflate(irgendwas, irgendwasLen, neu, neuLen); FILE *EntzipDatei; EntzipDatei = fopen("BertDaten\\schwarzweiss.bmp", "wb"); fwrite(neu, 1, neuLen, EntzipDatei); fclose (EntzipDatei); delete Buffer; delete irgendwas; delete neu; }