# Dezimal in Hexadezimal



## Andreas703 (11. März 2005)

Hy Leute!

 Ich hab ein wirklich dringendes Prob da ich nun am Montag nen Test hab! Und ich muss unbedingt wissen wie man Dezimal in Hexadezimal umrechnen kann!


  Hier mal der Code den ich bis jetzt hab!



```
#include <stdio.h>
  #include <conio.h>
  #include <iostream.h>
  int main()
  {
  int a,b,z;
  do
  	{  cout<<"Gib eine Zahl an\n";
  	   cin>>a;
  	   b=a/16;
  	   z=b%a;
  	   cout<<"\nErgebnis= "<<z;
  	   getch();
  	  
  	}
  	while(a!=-1); 
  	return 0;
  }
```
 
 Diese Form sollte es auch beibehalten da ich noch nicht allzuviele andere Befehle kenne! 
 Ich kann erst die paar und sowas wie Switch,for,if, und ja das wars auch schon im großen und ganzen! Außer eben dem was da in dem noch drinsteht!
http://[/CODE] <br /> <br /> Diese ...en" smilieid="50" class="inlineimg" />)<br />http://[/CODE] <br />
 <br />
 Dies...en" smilieid="50" class="inlineimg" />)<br />


----------



## Tobias K. (11. März 2005)

moin


Muss es umgerechnet werden oder einfach nur in hexadezimaler Form ausgegeben werden?

```
#include <iostream.h>

int main()
{
	int zahl;
	do
	{
		cout<<"\nGib eine Zahl an\n";
		cin>> zahl;
		cout<< "\n" << hex << zahl;
		
		cin.get();
	}
	while(zahl!=-1); 

	return 0;
}
```


mfg
umbrasaxum


----------



## Andreas703 (11. März 2005)

so darf es leider nicht sein! Ich muss nämlich leider dieses a%b einbauen!
 Mich nervt es schon recht lang und ich versuchs jetzt schon über 2Wochen hinzubekommen, schaffs aber nicht!


----------



## Tobias K. (11. März 2005)

moin


Erstmal vorweg:
Wir sind nciht da um deine Hausaufgaben zu machen.

Zum Thema:
Such per Suchfunktion mal nach "hexadezimal" oder nach "dezimal", ein paar Anregungen lassen sich da finden.


mfg
umbrasaxum


----------



## Andreas703 (11. März 2005)

also mal zu dem das ihr nicht da seid meine Aufgaben zu machen!
 Es ist keine Aufgabe sondern dies kommt zu nem Test(das weiß ich da unsere Parallelklasse genau die gleiche Aufgabenstellung hatte) und da will ich dies eben schaffen! Und gelernt haben wirs noch nicht!

 Und bei der Suchfunktion hab ich leider nix passendes gefunden


----------



## Tobias K. (11. März 2005)

moin


Achso wir wollen Schummeln...... 

Was ist denn hiermit: http://www.tutorials.de/tutorials182207.html&highlight=dezimal


mfg
umbrasaxum


----------



## Andreas703 (11. März 2005)

naja da erkennt er sofort das das nicht aus eigenen Stücken geschrieben wurde! Denn da kann ich die Hälfte überhaupt nicht verstehen bei dem Prog dort!


----------



## Tobias K. (11. März 2005)

moin


Hab per Google auch was gutes gefunden:


> Kommen wir nun zur Umrechnung von Dezimalzahlen in die anderen Systeme. Hierzu gibt es eine Vorgehensweise, die für alle Systeme gleich ist. Man ermittelt zuerst die Anzahl der Zeichen für das Zielsystem und kann dann gleich loslegen.
> Ich wähle hier einfach mal 13677 als Dezimalzahl und rechne diese erst mal in eine Hexadezimalzahl um. Hier hat das Zielsystem also 16 Zeichen und jetzt kann man rechnen:
> 
> 
> ...



So, den Rest erhällst du mit "rest = zahl / 16", und dann immer so weiter.

Werde das auch mal eben selber machen.


mfg
umbrasaxum


----------



## Andreas703 (11. März 2005)

ja gut also händisch rechnen kann ichs auch schon^^ Aber gut wenn dus hast dann gib mir den Code nachher ^^


----------



## Tobias K. (11. März 2005)

moin


Und ich denk ja garnicht dran!
Das machst du mal schön selber, aber ich helfe natürlich gerne....

Ich hab im ganzen Programm einmal % (modulu) und einmal / (geteilt) gebraucht.


mfg
umbrasaxum


----------



## Andreas703 (11. März 2005)

und bei mir will ers nicht starten weil er kein MSVCP71 finden kann!

 Pls gib mir den Code ich flehe dich an! AM Montag hab ich Test und ich sitz schon solang dran! Ich flehe dich an *bettel*


----------



## Java/CppProgrammer (11. März 2005)

Andreas703 hat gesagt.:
			
		

> Hy Leute!
> Diese Form sollte es auch beibehalten da ich noch nicht allzuviele andere Befehle kenne!
> Ich kann erst die paar und sowas wie Switch,for,if, und ja das wars auch schon im großen und ganzen! Außer eben dem was da in dem noch drinsteht!



Aber Arrays (insbesondere Char Arrays) hattet ihr schon? Denn die wären für ne Lösung (zumindest eine einfache) nötig.


13677:16=854 Rest 13
854:16=53 Rest 6
53:16=3 Rest 5
3:16=0 Rest 3

Jetzt nimmt man die Zahlen, die als Rest übrig geblieben sind und zwar in der Reihenfolge von unten nach oben und erhält in diesem Beispiel als Ergebnis 3 5 6 13. Diese Zeichen werden einfach hintereinander weggeschrieben, wobei allerdings die Zahlen von 10 bis 15 nochmals umgesetzt werden müssen; und zwar:
10 als A,
11 als B,
12 als C,
13 als D,
14 als E und
15 als F.


Genau so machst dus. Du teils die Zahlen durcheinander, den Rest speichers du gleich in Umgewandelter Form (z.B. durch ein switch Konstrukt )in nem Char Array.
Die Zahlen teilst du so oft durcheinander, bis das Ergebniss Null ist. Dann gibst du das Array in umgekehrter Reihenfolge aus.


----------



## Tobias K. (11. März 2005)

moin


Meine güte du Nervbold, hier hast ihn:

```
int main()
{
	int zahl	=0;
	int reste[10];
	int zaehler	=0;
	int neu		=0;

	cout<< "Hex 2 Dez Umrechner von umbrasaxum\n";
	cout<< "Dez: ";
	cin>> zahl;

	neu = zahl;

	do
	{
		reste[zaehler++] = neu % 16;
		neu /= 16;
	}
	while(neu != 0);

	cout<<"Hex: ";

	for(int l=zaehler-1; l>-1; l--)
	{
		switch(reste[l])
		{
		case 10: cout<<"A"; break;
		case 11: cout<<"B"; break;
		case 12: cout<<"C"; break;
		case 13: cout<<"D"; break;
		case 14: cout<<"E"; break;
		case 15: cout<<"F"; break;
		
		default: cout<< reste[l];
		}
	}

	return 0;
}
```

Ich würde fast behaupten das man das nicht einfacher machen kann!


mfg
umbrasaxum


----------



## Andreas703 (11. März 2005)

danke 
 Nun schaff ich den Test sogar mit viel Glück noch :=)


----------



## Artur1982 (14. April 2007)

Hallo an alle,

ich habe da so ein Problem, wenn ich die Hexadezimalzahl nicht am Bildschirm ausgeben will, wie oben beschrieben, sondern in einer Variablen speichern, um sie dann später verwenden zu können. Ich habe versucht den Code von oben zu verändern, aber irgendwie gehts net. Kann mir bitte jemand weiter helfen?


```
#include <iostream>

    using namespace std;

    int compare(char, int, int, int); 
    char hex(char);
    int a,M,t;
    char v;
    
    int main()
    {      
      compare(31, 10, 30, 20);
      
      cin.get();
    }

    int compare(char v1, int a1, int M1, int t1) 
    {      
      char x;  
      v = v1;
      a = a1;
      M = M1;
      t = t1;
      x = hex(v);
      
     }

    char hex(char v2)
    {
            int zahl =0;
	    char reste[10];
	    int zaehler =0;
	    int neu	=0;

	    zahl = v2;
	    neu = zahl;
        
	    do
	    {
                reste[zaehler++] = neu % 16;
                neu /= 16;
             }while(neu != 0);
        
	    for(int l=zaehler-1; l>-1; l--)
	    {
                        switch(reste[l])
		     {
                           case 10: reste[l] = 'A'; break;                 
		         case 11: reste[l] = 'B'; break;
		         case 12: reste[l] = 'C'; break;
		         case 13: reste[l] = 'D'; break;
		         case 14: reste[l] = 'E'; break;
		         case 15: reste[l] = 'F'; break;		         
		     }
        }   
        return (char)reste;
     }
```


----------



## deepthroat (16. April 2007)

Hi.





Artur1982 hat gesagt.:


> Hallo an alle,
> 
> ich habe da so ein Problem, wenn ich die Hexadezimalzahl nicht am Bildschirm ausgeben will, wie oben beschrieben, sondern in einer Variablen speichern, um sie dann später verwenden zu können. Ich habe versucht den Code von oben zu verändern, aber irgendwie gehts net. Kann mir bitte jemand weiter helfen?
> 
> ...


Also erstmal gibt es in deinem Code mehrere Probleme. Du kannst ein char-Array nicht als char zurückgeben. Ein Array welches nur lokal in der Funktion auf dem Stack angelegt wurde sowieso nicht.

Dann müßtest du bereits in der ersten Schleife die Werte von rechts nach links in das Array eintragen.

Verwende doch einfach die C Funktion sprintf:

```
#include <cstdio>

char ausg[20];
int zahl = 4999;

sprintf(ausg, "%X", zahl);
```

Gruß


----------



## Winner (17. Oktober 2007)

Ich habe da eine Lösung zu wie du die Ausgabe in eine Variable machen kannst.

Ich weis der Beitrag hier ist veraltet auf den ich Antworte, aber ich selbst freu mich, wenn dann immer Lösungen dort stehen die Funktioeniern. Habe deine nicht ausprobiert.

Meine klappt wunderbar!

Also viel Spaß damit


```
void CGGABuild::dezTOhex(int idez){
    int iRest;
    int iQuotient;  
    CString sErgHex;

    CString sHex;
    
    do{

       iQuotient=(int)idez/16;
       iRest= idez%16;
       idez=iQuotient; //Zuweisung, das nicht immer mit dem Startwert gerrechnet wird
       if(iRest<10){
           sHex.Format(_T("%i"),iRest);
       }

       else{
        switch(iRest){
            case 10:
                sHex="A";
                break;
            case 11:
                sHex="B";
                break;
            case 12:
                sHex="C";
                break;
            case 13:
                sHex="D";
                break;
            case 14:
                sHex="E";
                break;
            case 15:
                sHex="F";
                break;
            }//ende switch
        
       }
    sErgHex= sHex+sErgHex; //Hexadezimalen String zusammenbauen
    }while(iQuotient!=0);

    sErgHex;

}
```


----------



## Dadeldi (24. August 2010)

//hexadezimal.cpp Zahlen aus dem Zehnersystem in Hexadezimalzahlen umrechnen
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
long dec;

cout << "Zahl im Zehnersystem: ";
cin >> dec;
printf("Zahl im Hexadezimalsystem: %x\n", dec);
return 0;
}


----------

