HexToInt-Funktion?



  • Die Suchfunktion hat in letzter Zeit zwar ein paar Macken, trotzdem sollte sie immer erster Anlaufpunkt sein!
    http://www.c-plusplus.net/forum/viewtopic.php?t=55196&highlight=hextoint



  • Irgendwie habe ich mit der Forensuche Nichts gefunden gehabt.

    Hier mein Code (auch aus dem Forum):

    String sLine="";
    int i,i1;
    for (i=1;i<Edit1->Text.Length();i++)
    sLine=sLine+IntToHex((int)Edit1->Text[i]-5,2); // Hier werden die ASCII-Codes mit 5 Subtrahiert.
    ListBox1->AddItem(sLine,0);
    ListBox1->AddItem(Edit1->Text,0);
    i1 = StrToInt("0x"+sLine);

    Wie kriege ich aus den Integern wieder einen ANSI-String raus?
    Muss man nicht alles Zahl-für-Zahl umwandeln?



  • Hey...wollt ihr nicht oder könnt ihr nicht.
    Ich bin ein Newbie in Sachen Cpp deshalb bin ich noch auf Hilfe angewiesen.



  • Hey, kannst du oder willst du keine Problembeschreibung posten? Keiner hier kennt dein Projekt und keiner will den Quellcode ausprobieren. Also sind wir schon auf eine Fehlerbeschreibung angewiesen.

    Ausserdem halte ich eine Wartezeit von gut 4h bis man sich wieder meldet etwas kurz und frech. Du nutzt diesen Dienst hier gratis, also hast du grundsätzlich mal kein Recht zu fordern dass man dir hilft. Wenn du mir jetzt nen monatlichen Scheck schicken würdest, sähe das wieder anders aus.

    Ausserdem glaube ich, es täte dir gut, mal den Debugger zu verwenden...

    -junix



  • Erstmal Verzeihung für meine Eile.
    OK hier eine Problembeschreibung:
    Ich will URL's die in einer Datei sind verschlüsseln.
    Da diese jedoch mehr als 2 verschiedene Sonderzeichen besitzen fällt Base64 weg.
    Im Forum habe ich die Methode mit dem Umwandeln in ASCII-Zeichen gesehen und die Verschiebung der Zeichen wodurch es nicht so einfach ist, die HEX-Werte mit einem HEX-Editor zu lesen.
    Allerdings weiß ich nicht wie man aus dem Hexstring (siehe Code im ersten Post) wieder den Ausgangsstring macht.

    Also brauch ich folgende Umwandlungen: URL(ANSISTRING) zu HEX-Werten und zurück.

    Ich hoffe, dass es jetzt ein wenig eindeutiger ist.



  • Zja... Da die Funktion, die du gezeigt hast, und die du aus dem Forum hier hast, von mir stammt, kann ich dir auch sehr gut helfen:

    Nachdem du diesen String verschlüsselt hast, hast du Hex-Werte, die den ASCII-Wert eines jeden Zeichens im ursprünglichen String -5 darstellen. Alle sind 2-Stellig, deshalb musst du zur StrToInt-Funktion immer 5 dazuaddieren:

    void HexToIntStr(String Hex)
    {
        String sLine="";
        Hex=Hex.UpperCase();
        for (int i=1;i<=Hex.Length();i+=2)
        {
            // Wenn ein Zeichen im Hex-String kein Hexadezimalzeichen ist, ...
            if (((Hex[i]<'0' && Hex[i]>'9') || (Hex[i]<'A' && Hex[i]>'F'))
            || ((Hex[i+1]<'0' && Hex[i+1]>'9') || (Hex[i+1]<'A' && Hex[i+1]>'F')))
                return "-1"; ///... wird "-1" zurueckgegeben.
            sLine=sLine+IntToStr(StrToInt("0x"+Hex.SubString(i,2))+5);
            // Ansonsten wird die Zeile Stueck fuer Stueck zusammengebaut.
        }
        // Wenn kein Fehler aufgetreten ist, wird die Urspruengliche Zeile als String zurueckgegeben.
        return sLine;
    }
    


  • Also deine Funktion kann in der Form gar nicht funzen, da du Return in der Funktion verwendest aber der Typ void() ist. Wenn der Fehler berichtigt ist besteht der Ausgabewert nur aus Zahlen.

    Kannst du mir nicht einfach deine Funktionen dafür geben? Eine die Sache verschlüsselt (auch mit den Verschiebungen) und eine die es wieder in die Ausgangsform bringt.
    Du hast das doch schon gecodet.
    @Windoof:Würde mich über deine ICQ-Nr. freuen.



  • Statt Copy/Paste-Programmierung zu betreiben würde ich dir empfehlen dich einfach mal mit dem Problem auseinander zu setzen... Will heissen: Analysieren, was du da machst und dann den Vorgangn umkehren...

    Aber ich weiss schon, das wäre hald mit (eigener) Arbeit verbunden...und wer will heute schon noch was tun um ans Ziel zu kommen?

    Ehrgeiz und Durchhaltewille scheinen immer mehr fremdwörter zu werden....

    -junix



  • Ooh Bitte komm mir nicht mit der Leier...
    es ist durchaus schneller und effizienter, wenn man für eine Problemstellung eine Lösung vorgegeben kriegt und diese dann analysiert.
    Ich habe ziemlich viel Zeit mit dem Finden von Lösungen bei schwierigem Dingen vergeudet bei denen ich wusste, dass mir da so schnell keiner helfen kann.
    Ich komme aus dem BASIC-Sektor und der Umstieg ist mir relativ schwer gefallen.
    Vielleicht ist es Bequemlichkeit, aber dort hatte ich auch bei solchen Umwandlungen eine Umkehrfunktion.

    Ich hätte Herrn Windoof eine PN oder E-Mail gesendet, aber die Features sind ja leider nicht aktiv.

    Ich habe mir die Sache näher betrachtet. Es liegt auf der Hand, dass bei dieser Umwandlung zahlen rauskommen, doch wie wandle ich diese wieder in normalen Text um?



  • OK..mit 1-2 Tipps von junix habe ichs doch noch gepackt!
    Zur Vollständigkeit halber hier der Source:

    String sLine="";
    int i,i1;
    for (i=1;i<=Edit1->Text.Length();i++)
      sLine=sLine+IntToHex(Edit1->Text[i]-5,2);
    }
    String TForm1::HexToIntStr(String Hex)
    {
        String sLine="";
        Hex=Hex.UpperCase();
        for (int i=1;i<=Hex.Length();i+=2)
        {
            sLine=sLine+static_cast <char>(StrToInt("0x"+Hex.SubString(i,2))+5);
        }
        return sLine;
    

Anmelden zum Antworten