Dezimalzahl in Hexagesimalzahl

Reinhard87

Grünschnabel
Hallo,

ich stehe gerade vor einem, wahrscheinlich einfachem, Problem.
Ich will einen Dezimalzahl in Hexagesimalzahl, also zu einer Zahl mit der Basis 6, umrechnen. Ich hab jetzt schon lange mit if-else Bedingungen rumgespielt, bin aber auf noch kein richtiges Ergebnis gekommen.
Kann mir vielleicht wer Tipps geben,bzw, weiterhelfen. Ich muss dazu sagen, ich hab noch nicht viel Erfahrung mit C.

MFG Reinhard
 
Hi,

also ersteinmal:
eine hex-zahl hat nicht die basis 6, sondern 16 (2 hoch 4)
falls du die Zahl i ausgeben willst, schreibst du das ja so:

int i;
//...
printf("Zahl: %d",i);
und wenn es als hex ausgegeben werden soll:
printf("Zahl: %x",i);

einfach %x statt %d nehmen, das printf erledigt das für dich

gruß
 
ohh sorry,
Hab ich mich vielleicht falsch ausgedrückt. Mein Fehler.
Ich möchte eine Dezimalzahl in eine Zahl zur Basis 6 umwandeln. Wie man das auf den Papier umrechnet ist ja kein Problem. Aber ich weiß nicht wie man das in C macht.
 
Und wie willst du das im Programm haben?
in einem int etc kannst du es in keinem "bestimmten" Zahlensystem speichern, intern ist es ja immer binär - Basis 2. Du kannst es nur anders ausgeben, oder zb in einem string
speichern.
hier einmal der stringvorschlag - jeder buchstabe wird für eine Ziffer verwendet:

Code:
int i;
//...irgendwas...die zahl in i wird umgerechnet:
int j;//Hilfsvariable
char c[32];//Hier ist später die Basis-sechs-zahl
//Zuerst alles auf null setzen:
for(j=0;j<32;j++)//20 ist die stringlänge
  c[j]= '0' ;//Die einfachen Anführungszeichen sind wichtig! ASCII-Code!
j[31]='\0';
j=30;
while(i)
{
  c[j]=i % 6; //Basis 6, bei anderer Basis andere Zahl einsetzen
  j--;
  i /= 6; //Ggf. auch Basiszahl ändern
}

//...Jetzt kannst du c ausgeben etc, zb so:
printf("%s",&c[j+1]);//Mit &c[j+1] werden die ganzen Nuller am Anfang
//weggelassen, wenn du sie brauchst, schreib stattdessen einfach c

Gruß
 
Zurück