[C++Builder] ASCII - Zeichen in Hex konvertieren



  • Hallo zusammen,

    ich weiß, dass das mit einer der einfachsten Dinge ist, aber ich benötige gerade dazu hilfe.
    Ich möchte Zeichen (ASCII) die in einem Array gespeichert sind nacheinander in hex umwandeln und die Hex-Ergebnisse dann auch in einem Array gespeichert haben!

    Kann mir da einer schnell Helfen??

    Vielen Dank

    Gruß



  • IntToHex()?



  • Nein, eher AsciiToHex!

    Ein beliebiges Zeichen soll in seine Hexdarstellung umgewandelt werden! Gibt es da schon vordefinierte Funktionen?



  • Du kannst höchstens die Ausgabe manipulieren um eine hexadezimale Darstellung zu erreichen.
    Intern ist ASCII bereits hexadezimal.



  • hast schon mal ne ASCII Tabelle näher angeschaut
    dann fällt dir auf das BigNeal recht hat.



  • skluge schrieb:

    Nein, eher AsciiToHex!

    schau dir mal in einem beliebigen C++ Buch die Datentypen "char" und "int" an. evtl fällt dir dabei etwas auf..

    gehört eigentlich zu den Grundlagen..



  • Naja das ist mir schon klar, dass intern die Werte in Hex verwaltet werden, doch ich möchte ein Array mit sagen wir mal 5 zeichen (array[5] = ('a','b','c','d','e'))
    später in ein Array von Hexzahlen haben!!

    Und wenn ich die Funktion

    IntToHex(block[i])
    

    anwende, dann bringt er folgenden Fehler:

    [C++ Fehler] HauptFormular.cpp(1936): E2285 Keine Übereinstimmung für 'IntToHex(char)' gefunden



  • skluge schrieb:

    [C++ Fehler] HauptFormular.cpp(1936): E2285 Keine Übereinstimmung für 'IntToHex(char)' gefunden

    na dan schmeiss die hilfe an und schau dir die Parameter für IntToHex() an!
    auf das hättest auch selber kommen können, oder? 🙄



  • Mir ist klar, dass ein Zeichen

    z.B. 'A' -> hex: 41 dez: 65 ist!!!

    Wie kann ich dass denn aber jetzt lösen (und bitte mit konkreter Lösung) wenn ich ein array mit Zeichen habe

    z.B.:

    char text[32] = ('A', 'B' ...usw)
    

    Jetzt möchte ich gerne folgendes Ergebnis bekommen:

    int hex[32] = ('41','42' ...usw)
    

    Das zweite array möchte ich dann in eine .ini-Datei schreiben. und zwar mit der Methode

    WritePrivateProfileString()
    

    Diese Funktion erwartet jedoch wieder ein char-Array.

    Wie bekomm ich das denn am schnellsten hin!

    Nochmals danke für die Antworten



  • int hex[32] = '41','42'

    Wie speicherst du FF in einem int?



  • Ich habe es jetzt geschafft mein Array mit Hexzahlen zu füllen.
    Jetzt ist die Frage, wie ich diese wieder zurück konvertiert bekomme!

    Also von Hex zu Char??



  • du solltest dich mit den grundlagen vertraut machen..

    hex, dez, binär, octal... etc.. das sind zahlensysteme und dienen nur zur veranschaulichung.

    ob du nun 65d, 41h, 101 octal (wie wahr das schonwieder für octal? 🙂 ), 1000001 binär hast, das intressiert dein rechner nicht. er rechnet alle gleich.

    du kannst deinem integer den zahlenwert in einem x-beliebigen zahlensystem zuweisen(solange er sie kennt), wie du willst.
    **
    char <==> int**

    der Variable-Typ char ist ganzzahlig und hat die grösse von 1 Byte (-128 bis +127)

    int ist auch ganzzahlig und hat die grösse von 4 Byte (uf.. das steht in der BCB-Hilfe 😉 )

    da beide ganzzahlig sind, und integer einen grösseren bereich hat, kannst du ohne probleme dem integer den Wert eines chars zuweisen.

    char c = 'A';
    int i = c;   // falls der Compiler hier jammert, einfach casten: int i = (int)c;
    ShowMessage(IntToStr(i));
    

    andersrum musst du aufpassen, dass der Wert des integers nicht grösser/kleiner als der Bereich des chars ist.

    int i = 0x41;
    char c = i;  // falls der Compiler hier jammert, einfach casten: char c = (char)i;
    ShowMessage(c);
    

    ⚠ unsigned <==> signed, ist dan wieder ein Thema

    mit meiner vorhin angesprochenen Funktion (IntToHex) kannst du einen Zahlenwert in einen Hex-String umwandeln.

    int i = 0x41;
    char c = 'A';
    
    ShowMessage(IntToHex(i,2));
    ShowMessage(IntToHex((int)c,2));
    

    ich hoffe das hilft dir etwas weiter.. solche grundlagen sollten sitzen



  • Ich habe es jetzt geschafft mein Array mit Hexzahlen zu füllen.

    Es würde mich immer noch interessieren wie du FF in das int-Array bekommen hast


Log in to reply