int2hex



  • pointercrash() schrieb:

    Hauptsache, Tim konnte seinen "beliebten" und "hilfreichen" typedef- Kalauer wieder mal aufwärmen :p

    der ist ja von zeit zu zeit auch wirklich lustig 😃



  • pointercrash() schrieb:

    Hauptsache, Tim konnte seinen "beliebten" und "hilfreichen" typedef- Kalauer wieder mal aufwärmen :p

    Warum nicht? Ich habe nichts gegen einen guten Witz, hin und wieder. Und er passt ja sogar hervorragend zum Thema!

    Außerdem denke ich sowieso, dass hexe ein Troll ist. Erst weiß sie nicht, dass "hex" (kann eigentlich keiner mehr hexadezimal aussprechen?!) kein Typ ist und sie ihren numerischen Wert darstellen kann, wie sie will. Dann ist ihr sprintf zu langsam, was ja irgendwie auf mehr als eine Übungsanwendung schließen lassen würde. Letztlich will sie dann doch nur den int-Wert als String darstellen (also plötzlich keine Rede mehr von hex). Und hier weiß sie dann aber schon, dass sie den numerischen Wert plus 0x30 rechnen muss, um auf den ASCII-Code zu kommen, das hexadezimale System ist ihr also nicht fremd. Dazu ist jedes Posting schön schwammig und doppeldeutig formuliert... 😮



  • _matze schrieb:

    Warum nicht? Ich habe nichts gegen einen guten Witz, hin und wieder. Und er passt ja sogar hervorragend zum Thema!

    Ne, besser ist er durch die Wiederholung auch nicht geworden.

    _matze schrieb:

    Außerdem denke ich sowieso, dass hexe ein Troll ist. ... Dann ist ihr sprintf zu langsam, Dazu ist jedes Posting schön schwammig und doppeldeutig formuliert... 😮

    Naja, Tatsache ist, daß sprintf mehr tut (Formatstringauswertung), als das, was man immer braucht. Und es wird heutzutage eindeutig zu sehr ohne Bedacht auf Performance programmiert. Stockende Blackberrys und humpelnde iPhones sind mithin die Folge. Der Performance- Doktor rät: Erstmal annehmen, Du hast nur `nen krüppeligen 8- Bitter.

    Selbst, wenn jemand nur mitnimmt, daß es sich gelegentlich lohnt, über Laufzeitverhalten nachzudenken, war`s das schon wert, ob hexe nun trollt oder nicht.



  • pointercrash() schrieb:

    Naja, Tatsache ist, daß sprintf mehr tut (Formatstringauswertung), als das, was man immer braucht. Und es wird heutzutage eindeutig zu sehr ohne Bedacht auf Performance programmiert. Stockende Blackberrys und humpelnde iPhones sind mithin die Folge. Der Performance- Doktor rät: Erstmal annehmen, Du hast nur `nen krüppeligen 8- Bitter.

    Da hast du schon Recht, keine Frage. Ich wollte ja auch eher darauf hinaus, dass diese Aussage eher nicht auf ein kleines Übungsprogramm eines Anfängers hindeutet (wenn auch möglich), ihre Fragen aber in eine ganz andere Richtung gehen. Du hast mein Posting ja auch ziemlich zerstückelt zitiert... 🙂



  • _matze schrieb:

    "hex" (kann eigentlich keiner mehr hexadezimal aussprechen?!)

    Abgesehen davon, dass das zwei unterschiedliche Systeme sind. Hexa ist nämlich zur Basis sechs (wird aber eigentlich eher selten benutzt 😉 ) wohin gegen hexadezimal zur Basis 16 ist.

    @pointercrash: Und wie sieht es bei dir mit A-F aus? 😉

    void toHexadecimal(int i, char *buf)
    {
    	int a;
    	for (a = 0; a < sizeof(int) * 2; ++a) {
    		buf[a] = (i >> (4 * (sizeof(int) * 2 - 1 - a))) & 0xf;
    		if (buf[a] < 10)
    			buf[a] += '0';
    		else
    			buf[a] += 'A' - 10;
    	}
    	buf[a] = 0;
    }
    


  • lagalopex schrieb:

    Abgesehen davon, dass das zwei unterschiedliche Systeme sind. Hexa ist nämlich zur Basis sechs (wird aber eigentlich eher selten benutzt 😉 ) wohin gegen hexadezimal zur Basis 16 ist.

    Na ja, mit "hex" meint man aber üblicherweise das Hexadezimal-System (Stichwort Hexeditor). 🙂



  • lagalopex schrieb:

    void toHexadecimal(int i, char *buf)
    {
    	int a;
    	for (a = 0; a < sizeof(int) * 2; ++a) {
    		buf[a] = (i >> (4 * (sizeof(int) * 2 - 1 - a))) & 0xf;
    		if (buf[a] < 10)
    			buf[a] += '0';
    		else
    			buf[a] += 'A' - 10;
    	}
    	buf[a] = 0;
    }
    

    ^^viel zu kompliziert.
    🙂



  • lagalopex schrieb:

    @pointercrash: Und wie sieht es bei dir mit A-F aus? 😉

    Kommt drauf an, unter ASCII zugegebenermaßen schlecht, der Displaycode von einem einfachen LCD paßt aber mit dem Offset genau. Das Beispiel war ja auch nur exemplarisch zur Darlegung des Prinzips. Wenn`s so stört, bitteschön:

    int i,x,y = 0;    // i = integer to hex
    char c[10];
    
    while(i)
    {
        x = i & 0x0F;        // Nibble freischneiden
        i >>= 4;        // Nibble kürzen
        if (x<10]
           c[y] = x + 0x30;     // Nibble to char '0' bis '9'
        else
           c[y] = x + 'A';     // Nibble to char 'A' bis 'F'
                               // Edit: von 'K' bis 'P' , schäm' mich ja schon
    ;) 
    
        y++;
    }
    
        y--;            // Indexkorrektur
    
    for(x = y; x >= 0; x--)        // rückwärts auslesen
    {
        // printf c[x] oder was auch immer
    }
    

    Besser so, Seele beruhigt? 😉

    _matze schrieb:

    lagalopex schrieb:

    Abgesehen davon, dass das zwei unterschiedliche Systeme sind. Hexa ist nämlich zur Basis sechs (wird aber eigentlich eher selten benutzt 😉 ) wohin gegen hexadezimal zur Basis 16 ist.

    Na ja, mit "hex" meint man aber üblicherweise das Hexadezimal-System (Stichwort Hexeditor). 🙂

    So, und wo wir schon alle beim Klugscheißen sind, korrekterweise heißt das Zahlensystem zur Basis 16 nämlich "Sedezimalsystem", auch wenn bei Hex jeder weiß, was gemeint ist. 😃



  • Ahja... 0-9 und K-P? :p

    Ich weiß zwar das wikipedia nicht das non-plus-ultra ist... aber zum flamen reichts noch:

    http://de.wikipedia.org/wiki/Sedezimalsystem schrieb:

    Alternative Bezeichnungen für hexadezimal (von griech. "hexa" und lat. "decem") sind hexadekadisch (Griechisch) und sedezimal (Latein) (Falsch hingegen ist der Begriff hexagesimal, der synonym zu sexagesimal ist und das Zahlensystem zur Basis 60 bezeichnet.).

    😃



  • lagalopex schrieb:

    Ahja... 0-9 und K-P? :p

    Autsch, erwischt 🙄 Mach 0x37 draus und breite den Mantel des Schweigens darüber 😉



  • Tim schrieb:

    typedef int hex;
    
    hex int2hex (int i){
    	hex x = (hex)i;
    	return x;
    }
    

    LOL

    👍

    😃


Anmelden zum Antworten