Hallo, ich habe mal ne Anfängerfrage! Ich möchte gerne eine Zahl zb. 45 direkt in einen Hex Wert umwandeln. Wie kann ich dies am besten realiesieren? Programmiersprache C .
Hexadezimal ist nur eine andere Darstellung der gleichen Zahl. Man kann also höchstens die Darstellung als string verändern. Dafür gibt es Formatierungs"-Befehle" für printf bzw. sprintf.
schau mal unter "atoi" nach. Ist es das was Du meinst ? Oder meinst Du mit "45" wirklich ne 45 - und keinen String. Dann gibt es wirklich nichts zu wandeln. Gruss Frank
Die Frage ist: wozu? Die Sache ist die: Im µC existiert kein Hex oder Dezimal. Der µC kennt nur Bytes in denen irgendwelche Bits gesetzt sind. Erst bei der Ausgabe oder Eingabe entscheidest du ob die Ausgeb jetzt Dezimal oder Hex oder binär erfolgen soll. Dito bei der Eingabe: Du legst fest, wie die Eingabe erfolgen soll: in Hex oder Dezimal oder irgendwie ganz anders. Sofort bei der Eingabe wird alles in die binäre Form gebracht. Ab dort läuft im µC alles nur noch binär ab. Man könnte also sagen: Dezimal, Hex oder Binär (oder eine ganz andere Zahlenbasis) sind nur verschiedene Ansichten für immer dasselbe: Eine Zahl, die in Form von gesetzten oder nicht gesetzten Bits in einem Byte gespeichert ist. Mit diesem Vorwissen: itoa() ist zum Beispiel eine universelle Konvertierroutine, die für einen 'Bithaufen' einen String generieren kann, der genau diese Zahl in Textform in jedem gewünschten Zahlensystem enthält. Eine andere Möglichkeit, wenn man nicht mit Speicher geizen muss, wäre zb. sprintf(). Da hat man dann auch noch zusätzliche Möglichkeiten die Formatierung zu steuern. Oder aber man schreibt sich selbst eine Konvertierroutine. Aber allen gemeinsam ist: vorne schiebt man eine Zahl (zb. in Form eines int) hinein und hinten kommt ein String raus, der eine textuelle Repräsentierung dieser Zahl darstellt.
Hallo! Eine einfache Methode ist, von dieser Zahl solange 16 zu subtrahieren, bis die Zahl kleiner als 16 ist. Damit hättest du die höherwertige Ziffer (bzw. Buchstabe) der Rest ist dann die Niederwertige Stelle der Hexzahl. Natürlich geht das nur, wenn die Zahl kleiner als 256 ist. Es gibt für Programme natürlich auch clevere Lösungen, bei denen die Stellen verschoben werden. Diese sind dann auch für größere Zahlen geeignet. Viel Spaß bei der Umsetzung Guido
// Version #1 int dezimalzahl = 45; int hexadezimalzahl = dezimalzahl; // Version #2 // http://www.mkssoftware.com/docs/man3/atoi.3.asp #include <stdlib.h> char * dezimalzahl = "45"; int hexadezimalzahl = atoi(dezimalzahl); // Version #3 // http://www.mkssoftware.com/docs/man3/itoa.3.asp #include <stdlib.h> int dezimalzahl = 45; char hexadezimalzahl[17]; itoa(dezimalzahl, hexadezimalzahl, 16); // Version #4 #include <stdlib.h> char * dezimalzahl = "45"; int temp = atoi(dezimalzahl); char hexadezimalzahl[17]; itoa(temp, hexadezimalzahl, 16);
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.