Auch Hex -> Dez, aber dieses mal länger



  • Ich möchte schon lange einen Umrechner Hexadezimal <-> Dezimal schreiben.
    Alerdings könnte da die Eingabe ja auch mal länger sein als ich mit den eingebauten Typen rechnen kann, sonst wäre es ja zu einfach. Also kann ich nicht wie normal 5FE = 5 * 16^2 + 15 * 16^1 + 14 * 16^0 rechnen.
    Wie könnte ich das Konvertieren trotzdem hinbekommen. Ist sowas vieeicht direkt "auf" dem string Möglich. Wäre die Basis 10 ebenfals mit 2^n auszudrücken, wäre es ja einfach.

    Jemand Anregungen wie man das reaisieren könnte?



  • So wie ich das verstanden habe musst du die eingabe parsen.
    Falls dem so ist, dann ist goggle dein Freund.



  • Versteh ich nicht! Was meinst du?



  • Kannst du dich verständlich ausdrücken, und genau sagen wo das Problem liegt?
    ... hat gemeint dass du die Eingabe "zerlegen musst".



  • hat gemeint dass du die Eingabe "zerlegen musst".

    Nein! Hab ichd as irgendwo angedeutet?
    Ich habe einen String "F1AEFB73DE3"
    Oder wenn ich es in ein Arrray o.ä. schiebe:
    bool bin[] = {15,1,10,14,15 ...};

    Nun will ich diese Zahl Dezimal haben. Und zwar nicht mit der üblichen Umrechnung wie oben beschrieben!(15 * 16^2 + 5 * 16^1...)



  • Was spricht denn gegen diese Umrechnung? Die könntest du eventuell noch per Horner-Schema umformen, dann geht es womöglich eleganter:

    ((((15*16+1)*16)+10)*16+...)



  • Alerdings könnte da die Eingabe ja auch mal länger sein als ich mit den eingebauten Typen rechnen kann

    Ich scheinbar brauchst du größere Integer auf dieser Seite http://www.trumphurst.com/cpplibs3.html#Libraries_available_via_FTP__D_L_ findest du eine Biblotek mit solchen typen ("HugeCalc - Arbitrary accuracy large integer calculations"). Vllt hilft dir das.

    Wenn du die Integer selbst emulieren willst empfehle ich etwas inline asm 😉

    mfg
    Apophis


Log in to reply