Char in Hex Umwandeln



  • hallo erstmal, ich möchte eine Zeile aus einer datei einlesen und werte daraus verarbeiten, was weitestgehend auf funktioniert, bis auf eine kleinigkeit.

    ich habe z.B. folgende Zeile:

    0000 2817          00019           goto main           ;Unterprogramme überspringen
    

    die ersten beiden zahlen sind HEX-Werte. beim tokenizen werden diese weiterhin als chars angesehen, wenn ich nun einen typecast über atoi mache parst er ja nach int(dezimal), wie bekomme ich das programm dazu nach int(hex) zu typecasten?

    gruß
    Mogli



  • Kommt drauf an, was du machen willst. Intern ist die Zahl eh im Dualsystem und nicht im Dezimalsystem abgespeichert. Wenn du beispielsweise die Zahl als Hexadezimalwert über cout ausgeben willst, dann geht das so:

    cout << hex << myFooInt;
    


  • ich möchte nur den hexwert als solchen erkennen und in einen korrekten intwert umwandeln und in einstruct speicher.



  • Du musst schon wissen, welcher Wert ein Hex-Wert ist und welcher nicht. Das kann man nicht immer anhand der Zahl sagen.

    Was meinst du mit "in einen korrekten int-Wert umwandeln"? Wie gesagt, das Zahlensystem ist völlig egal, erst bei der Ausgabe wird es wichtig.



  • int a;
    sscanf("hexstring", "%x", &a);
    


  • also, ich habe zum beispiel siehe oben einen

    string x mit dem inhalt 2817 welcher ein hexwert sein soll,

    dies entspräche einem dezimalwert von 10263

    wenn ich den wert mit atoi typecaste erhalte ich leider auch nur den intwert 2817, welcher ja falsch ist, wie kann ich einen char der ein hex darstellt in int umwandeln, so dass er korrekt ist?



  • So wie es mit allen streams geht. Vergleich mal das hier, was ich schon gepostet hab (etwas ausführlicher);

    int myFooInt = 10263;
    cout << hex << myFooInt;
    

    mit dem hier

    string s = "2817";
    stringstream str;
    str << hex << s;
    int i;
    str >> i;
    cout << i;
    

    Es läuft immer nach dem gleichen Schema ab.



  • danke


Anmelden zum Antworten