Anzeige:
Ergebnis 1 bis 8 von 8

Thema: aus char hex machen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.10.2002
    Beiträge
    15

    Question aus char hex machen?

    hi,

    wie mache ich aus einem char: 'F' eine hex zahl F (15) ?
    außer das ich zuerst gucken muss ob das char zwischen 0-9 bzw A-F liegt
    und dann noch die '0' bzw die '7' abziehen muss?

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.02.2002
    Ort
    2nd level cache
    Beiträge
    90
    In welcher Sprache soll das denn sein?
    Einmal schwarzen Tee mit Milch und Zucker bitte!

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    61
    Fuer C

    Eigentlich brauchst du das gar nicht Umwandel da c char zeichen sowiiso nur als int werte speichert

    bei ausgabe eines zeichens als char wert wuerde das heisen:



    Code:
    #include <stdio.h>
    
    void main(void)  {
    char x='F';
    printf("\n%x",x);
    printf("\n%i",x);
    printf("\n%c",x);
    }
    Auserdem meine ich doch das laut asci tab. F als HEX46 ist

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    @sven1978:
    du hast da was missverstanden, gewünscht war eine möglichst
    kurze funktion die hex/dec konvertierung durchführt.( deswegen f=15)
    @Jaipur:
    ich würde schon sagen dass der weg den du beschrieben hast der
    kürzeste ist (wobei man das sicherlich etwas optimieren könnte)

  5. #5
    Registrierter Benutzer
    Registriert seit
    28.11.2002
    Ort
    Dallmin
    Beiträge
    17
    Na denn, hier ist eine Funktion die das können sollte was Du verlangst. Funktioniert nur mit Grossbuchstaben, müsste man also gegebenenfalls noch ein wenig verfeinern.

    Code:
    int HexToDez(char* Hex)
    {
    	int c, i, k;
    
    	c=0;
    	i=0;
    
    	do{
    		k=Hex[strlen(Hex)-i-1];
    		if(k>47 && k<58) k=k-48;
    		else if (k>64 && k<71) k=k-55; 
    		c+=k*(int)pow(16, i);
    		i++;
    	}while(i<(int)strlen(Hex));
    
    	return c;
    }
    Sowas ähnliches gabs gestern schon mal im PHP-Bereich, nur eben mit Binärzahlen. Das Prinzip ist aber das Gleiche.
    "There are two major products
    that come out of Berkeley: LSD
    and UNIX. We don't believe this
    to be a coincidence." - Jeremy S.
    Anderson

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    hier nochmal das gleiche, aber etwas kürzer:
    Code:
    int HexToDez(const char* Hex)
    {
    	int result = 0;
    	char c;
    	while ((c=*(Hex++))!=0)
    	{
    		 (c-='0')>9?c-=7:0;
    		 result=c+(result<<4);
    	}
    	return result;
    }

  7. #7
    Registrierter Benutzer
    Registriert seit
    28.11.2002
    Ort
    Dallmin
    Beiträge
    17
    Original geschrieben von arthur
    hier nochmal das gleiche, aber etwas kürzer:
    Jau, danke, C wie wir es lieben, kurz und unlesbar.
    "There are two major products
    that come out of Berkeley: LSD
    and UNIX. We don't believe this
    to be a coincidence." - Jeremy S.
    Anderson

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    es geht sicher noch kürzer, hab nur keine zeit damit weiter zu spielen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •