mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfanger Hex Dezimal


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 .

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Frank W. (frankw) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: flintstone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
// 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);

Autor: Lehrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klasse! Nun hat Martin seine Hausaufgaben erledigt. Er bekommt eine "1".

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Version #4 gefällt mir am besten...

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann würde ich mal sagen Danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.