Hex nach Dez???



  • OK, ich verbesser mich: Dass die '9' neun Stellen hinter der '0' stehen sollte, kann man voraussetzen (auch wenns mitnichten schöner Stil ist).

    Wo arbeitest du?



  • Bleibt mal locker. Bis jetzt lief so Code mit - '0' noch auf JEDER Maschine, die ich benutzt habe. Außerdem seht ihr doch an der Art wie er die Frage stellt, dass der Threadstarter Anfänger ist, da wird er sein Programm bestimmt nicht auf total exotische Plattformen portieren wollen. Manchmal kann man es mit der Standard-Klugscheisserei wirklich übertreiben.


  • Administrator

    Simon2 schrieb:

    Dravere schrieb:

    ...
    Da man dich im Glauben gelassen hat, dass der Zeichensatz vom Standard gerantiert wird, ...

    Habe ich nie geglaubt...

    "dich" im Sinne von dir in der Haut des Threaderstellers. 😉

    @Standardklugscheisserei,
    Kurz und einfach gefragt:
    Wieso etwas auf eine Art erledigen, welche nicht garantiert fehlerfrei läuft, wenn es eine einfache und per Standard fehlerfreie Alternative gibt?
    Und man bringt den Leuten am besten die fehlerfreie Methode bei und die Leute, welche die nicht fehlerfreie Methode "predigen" sollten schon bald auf den Pfad der Erleuchtung gebracht werden ... Und so sprach Gott ... Eeeeeh, falscher Text 😃
    Aber ich denke es ist klar was ich meine 😉

    Grüssli



  • Michael E. schrieb:

    ...Wo arbeitest du?

    Bankenrechenzentrum.
    Da gibt's Großrechner, Unix-Server, Desktops, Kryptokarten, Chipkarten, ... unter zOS, AIX, Linux, Solaris, Windows mit Java, C, C++, COBOL, PL1, ASM, ... zu programmieren.
    Natürlich nicht alles von mir, aber Plattform- und besonders Zeichensatzunabhängigkeit ist das A&O dabei.

    Mal ganz abgesehen von der Frage, wieviele Bytes zwischen '0' und '9' liegen, muss man sich bei dieser "Handmethode" z.B. auch noch um
    - Rechnen zu anderen Basen (Hex),
    - Fehlerhandling (wie mit "Nichtziffern" umgehen?) und
    - Dokumentation
    manuell kümmern.
    ... und da stellt sich IMHO schon die Frage (wie sie auch Dravere sie stellt): Wofür das Ganze, wo es doch einen einfachen und sicheren Standardweg gibt?

    Gruß,

    Simon2.



  • Und darum machen wir alle ein switch-case von '0' bis '9' !



  • Simon2 schrieb:

    ... und da stellt sich IMHO schon die Frage (wie sie auch Dravere sie stellt): Wofür das Ganze, wo es doch einen einfachen und sicheren Standardweg gibt?

    Gruß,

    Simon2.

    Michael E. schrieb:

    (auch wenns mitnichten schöner Stil ist)

    Simon2 schrieb:

    Bankenrechenzentrum.

    Hört sich interessant an.



  • Michael E. schrieb:

    ...

    Simon2 schrieb:

    Bankenrechenzentrum.

    Hört sich interessant an.

    Ist es im Wesentlichen auch. Leider wird meine Arbeit in immer größerem Maß von "Politik" bestimmt und immer weniger von fachlichen oder technischen Herausforderungen... 🙄 😡
    Da diskutiert man 3 Monate für eine 5-PT-Änderung, weil sie politisch nicht opportun erscheint (weil irgendwelche Leute ihre Privatfehden austragen; weil welche meinen, sich "besser aufzustellen", wenn sie prinzipiell dagegen sind; weil "wir das immer schon so gemacht haben"; weil "wir das vor 3 Jahren so beschlossen (und schon damals nicht vernünftig durchdacht) haben"; ...).

    Ist manchmal ein wenig frustig - aber wenn man dann ans Arbeiten kommt und das Zeug irgendwann mal "produktiv genutzt" wird, ist es großartig!! 😃 😃

    Gruß,

    Simon2.



  • Hmm.. nettes OT Gespräch..
    Simon2, du bist ja so ein guter Freund von mir. Kannst du nicht mal eben etwas sechsstelliges auf mein Konto überweisen? 😉



  • drakon schrieb:

    Hmm.. nettes OT Gespräch..
    Simon2, du bist ja so ein guter Freund von mir. Kannst du nicht mal eben etwas sechsstelliges auf mein Konto überweisen? 😉

    Leider arbeite ich genau in der Abteilung, die sowas verhindert. :p 😉
    (Es gab mal eine Statistik, dass 5% der Angriffe auf Banksysteme von Insidern passieren ... diese aber 95% des Schadens verursachen. Inzwischen dürfte diese Statistik aber anders aussehen)

    Gruß,

    Simon2.



  • Scheppertreiber schrieb:

    Wenn Du einen Hex-Buchstaben (besser Ziffer) ein den Wert umwandelst, einfach

    char  c;
    
    c = '9' - '0';
    

    Das '9' hat den Wert 57, zieht man davon den Wert von '0' (di 48) ab, bleibt
    der Zahlenwert 9 übrig. Für Ziffern > 9 dann nochmal 7 dazuzählen.

    Das wird von A...F schon frickeliger, weil Du einen Offset brauchst und ggf. zwischen Klein- und Großbuchstaben unterscheiden mußt. Die einzige Methode, die auf jedem System funktionieren sollte: Man legt sich ein Array mit allen 16 möglichen HexZiffern an und sucht das Zeichen darin. Wird es gefunden, dann ist der Index der Wert.



  • c++fan 2008 schrieb:

    ...Wird es gefunden, dann ist der Index der Wert.

    hmmm, aber leider können 'a' und 'A' nicht denselben Index haben.

    Da müsste man "weiterfrickeln (vorher jedesmal ein toupper(), die erlaubten Zeichen als Index nehmen (Problem: ungültige Zeichen erkennen), ....).

    Also nochmal (Los Dravere! Nochmal im Duett): Warum sollte man das tun?

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Warum sollte man das tun?

    Weil man es selbst programmieren will? Fertige Lösungen gibt es genug, wie etwa sscanf und stringstream.


  • Administrator

    c++fan 2008 schrieb:

    Simon2 schrieb:

    Warum sollte man das tun?

    Weil man es selbst programmieren will? Fertige Lösungen gibt es genug, wie etwa sscanf und stringstream.

    Wenn man es selber implementieren möchte, um mal zu sehen, wie sowas geht, dann würde ich sowieso empfehlen, es anders zu machen. Jedenfalls ganz sicher nicht mit irgendwelchen Zeichensubtraktionen. Dann wäre noch der switch-case Ansatz besser!

    Aber unter "normalen" Umständen, gibt es keinen Grund, wieso man sowas tun sollte.

    Grüssli


Anmelden zum Antworten