Gast
#2372364
Hi, ich möchte eine Integer Variable als 4 stelligen Hex-Wert über die UART ausgeben. Wie programmiere ich das am Besten in c?
|
Anzeige
|
Ausgabe als hex-Wert
Gast
#2372364
Hi, ich möchte eine Integer Variable als 4 stelligen Hex-Wert über die UART ausgeben. Wie programmiere ich das am Besten in c?
oder itoa() bzw. utoa() verwenden, und die Stellenanzahl von Hand hinbiegen. Zumindest ist das der übliche Weg. Man könnte auch die UART zur Standardausgabe machen, dann kann man ohne Umweg über einen Puffer direkt z.B. mit printf() schreiben.
Gast
#2372368
Danke! Wie könnte ich es mit itoa() machen? Wäre das schneller, oder besser? Die printf-Funktionen brauchen viel Code und sind relativ langsam. Jens schrieb: > Wie könnte ich es mit itoa() machen? Wäre das schneller, oder besser? Doku lesen: http://www.nongnu.org/avr-libc/user-manual/index.html itoa() liefert soviele Stellen, wie nötig. Ggf. musst du halt auf deine 4 Stellen auffüllen. Dafür ist itoa() sehr sparsam im Vergleich zu snprintf(). Wenn du in deinem Programm aber eh die printf-Dinger brauchst, kannst du sie hier auch gleich verwenden. Von der zweiten Verwendung an blähen sie das Programm ja nicht mehr weiter auf Wahrscheinlich brauchst du aber eher utoa(), weil ich bei "hex" erstmal von unsigned ausgehe. itoa() ist für signed. Klaus Wachtler schrieb: > itoa() liefert soviele Stellen, wie nötig. Andersrum formuliert: Keine führenden Nullen.
Gast
#2375745
Hallo, könnte wer von euch mal drüberschauen, ob der Code so in Ordnung ist? DANKE! Gegeben Integervariable value;
Gast
#2375788
Da nibbleX und hextable[] Zeichen enthalten, sollten sie vom Typ char (nur char, kein signed/unsigned) sein. Und es ist besser erst zu verschieben und dann zu maskieren. Wenn man um 4 nach rechts schiebt, braucht man vorher nicht zu maskieren. Kompilierbar ist es eh nicht, alleine wegen der Punkte in der Tabelle. irgendwo hatte ich sowas gefunden:
Holger edit: auch hier könnte das erste maskieren entfallen
Gast
#2378996
Jens schrieb: > unsigned char hextable[] = { '0','1','2'. > '3','4','5'. > '6','7','8', > '9','A','B', > 'D'.'E','F', }; Wo ist 'C' ??? Gruss Stefan
Gast
#2379165
Das ist alles C. Wenn es vom C-Compiler ohne Fehler übersetzt wird, ist es C. :-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|