Hallo zusammen,
kann mir jemand den Sourcecode in C sagen, wie ich aus einer Datei eine Dezimalzahl einlese und sie dann in Hexadezimal umrechne? Muß dann mit der umgerechneten Zahl weiterrechnen. Danke!!!
Hallo zusammen,
kann mir jemand den Sourcecode in C sagen, wie ich aus einer Datei eine Dezimalzahl einlese und sie dann in Hexadezimal umrechne? Muß dann mit der umgerechneten Zahl weiterrechnen. Danke!!!
Hi!
So ganz verstehe ich deine Frage nicht. Eine Zahl, die in einer numerischen Variable gespeichert wird ist eine Zahl und kann immer weiterverrechnet werden.
Bei der Eingabe werte ich ein Zahlendarstellungsformat aus und wandele dieses in einen numerischen Wert um. Bei der Ausgabe nehme ich den numerischen Wert und wandle ihn in eine Zeichenkette um. Das Format der Ausgabe kann ich dabei weitgehend selbst bestimmen.
Die Funktionen zur Zeichenwandlung in numerische Werte und umgekehrt findet man doch dann in jeder C-Doku (Stichwort scanf() und printf()).
Bis denn
Andreas
Hi,
also mein Problem ist folgendes. Ich habe eine 8 stellige Zahl im Dezimalformat in einer Datei fest stehen z.B. 48965231. Nun muß ich diese aber in einem Programm verarbeiten, welches die ASCII Werte verarbeitet und zwar immer von den zweistelligen Hexwerten. In meinem Beispiel heißt dass, 48965231 in Hex wäre 02 EB 26 6F (hab ich jetzt gleich mit Leerstellen zur Übersichtlichkeit getrennt). Nun muß ich in diesem Programm mit den Ascii Werten von 02, von EB, von 26 und von 6F (insgesamt also 4 Ascii Werte) weiterrechnen.
Genau da ist mein Problem. Muß die ganze Zahl in Hex umrechnen, dann in Tuppel aufteilen und diese in Ascii umrechnen. Wobei von diesen Tuppel in Ascii kein Problem ist, geht ja dann einfach mit printf, aber eben diese Aufteilung brauch ich.
Hoffe hab dir mein Problem ein wenig erklären können.
Wäre über eine Antwort sehr dankbar!
Hi!
Ich hab' im Moment keinen C-Compiler am Ende des Tataturkabels. Aber wenn ich mich nicht irre (und mein Turbo C++ 3.0 Handbuch behauptet das auch), dann kannst du doch mit printf() auch ganzahlige Werte in Hex-Darstellung ausgeben (Stichwort: %X bzw. %lX).
Mit sprintf() steht die Funktion von printf() ja dann zur Verfügung um das Ergebnis in einen String speichern zu können.
Falls du damit nicht klarkommst, kannst du natürlich selbst umrechnen:
Teile denen Wert durch 16 (Integerdivision) und ziehe dasvErgebnis vom Ursprungswert ab. Dieses Subtraktionsergebnis liegt zwischen 0 und 15 und entspricht genau edem Wertebereich einer HEX-Ziffer.
Das ganze wiederholt man, bis der Divisionsrest 0 (Null) wird.
Bis denn
Andreas
Für Schreibfaule, hier werden 8stellige Dezimalzahlen
als Strings hin und her konvertiert.
Voraussetzung ist dec[9], und hex[17]
Fehler, wie immer, nicht ausgeschlossen ;-)
Gruss, vergisses
void decToHex( const char* dec, char* hex )
{
for( int i=0; i {
unsigned char c = dec[i];
hex[2*i ] = (c/16 hex[2*i+1] = (c%16 }
hex[16]=0;
}
void hexToDec( const char* hex, char* dec )
{
for( int i=0; i {
char c1 = hex[2*i ];
char c2 = hex[2*i+1];
int n1 = (c1 int n2 = (c2 unsigned char c = n1*16+n2;
dec[i] = c;
}
}