Hex in String umwandeln



  • Hallo weiß jemand wie ich Hexzahlen (in etwa: "48616C6C6F") Zu einem String umwandeln kann?

    Danke



  • 48616C6C6F kann nur bereits als String vorliegen.



  • Ja, hab ich auch. Nur dieses "48616C6C6F" ist gleich "Hallo" und ich wollte fragen wie ich das mache.



  • Schleife über die Stringlänge

    mit String.sub(beginn,) 2 Zeichen lesen

    diese in beispielsweise mit
    int zahl=strtol(String.c_str(),NULL,16);
    in eine int wandeln.

    Diesen als Zeichen einem Ausgabestring anfügen



  • Vielen Dank!



  • Ich hab noch eine Frage zu diesem Code:

    Edit3->Text = "";
    int result;
    char Code;
    AnsiString Text = Edit2->Text;
    
    for (int Lv = 1; Lv <= Text.Length(); Lv++)
    {
        result = Text[Lv];
        Code = result;
        AnsiString Hex = Code;
        Edit3->Text = Edit3->Text + Hex;
    }
    

    In Edit2 steht die Hexzahl
    Aber wieso steht jetzt in Edit3 auch nur die Hexzahl?



  • Hallo

    AnsiString Hex = Edit2->Text;
      AnsiString Result;
      AnsiString Buffer;
      while (!Hex.IsEmpty())
      {
        Buffer = Hex.SubString(1, 2);
        Hex.Delete(1,2);
        Result += char(strtol(Buffer.c_str(),NULL,16)); 
        }
      Edit3->Text = Result;
    

    bis bald
    akari



  • Vielen Vielen Dank!! 😃



  • Noch ne frage zu diesem Code:

    int result;
    char Code;
    AnsiString Text = Memo1->Text;
    
    for (int Lv = 1; Lv <= Text.Length(); Lv++)
    {
        Code = Text[Lv]; // ASCII-Code für das Zeichen an der Stelle Lv bestimmen
        result = Code;
        AnsiString Hex = IntToHex(result,2);
        Memo2->Text = Memo2->Text + Hex;
    }
    

    Der Code funktioniert eigentlich ganz Super. Aber wenn man einen größeren Text in Hex umwandeln will, dauert das sehr lange. Da das umrechnen von Hex ganz schnell geht (Code von akari) wollt ich fragen ob es eine schnellere möglichkeit gibt.

    Danke



  • Memo2->Text = Memo2->Text + Hex;
    

    Diese Zeile ist daran schuld. Hier wird ein temporärer AnsiString erzeugt, in den der ganze Text des Memos kopiert wird und wieder zurück. Das dauert eben.

    Lies jede Zeile des Memos in einen AnsiString, wandele diesen String mit der obigen Methode um und schreib den umgewandelten String zurück in das Memo. Das dürfte schon um einiges schneller sein. Ansonsten wird es wohl nur noch schneller gehen, wenn Du die Daten in ein oder 2 TStringList pufferst.

    Grüße Joe_M.



  • Außerdem solltest Du dir mal die Methoden BeginUpdate() und EndUpdate() ansehen.


Anmelden zum Antworten