Hi, ich habe hier letzt in irgendeinem C code eine sehr kurze und einfache Lösung gesehen um einen Hexwert(Binärwert) in einen Dezimalwert(BCD) umzurechnen. Es war ein zweizeiler in einer while schleife, finde ihn nur nicht wieder... Wenn jemand weiß wo das ist, bitte um Rückmeldung. Vielen Dank, Yve
Hi, danke für die Tips, aber ich suchte explizit dieses Beispiel. Ich wollte keinen Modulo verwenden und auch keinen String als Ergebnis. Ich habe meinen Fehler nun gefunden, und es funktioniert. uint32_t conv_hex2dez (uint16_t hex) { uint16_t div=10000; uint32_t add=0x10000; uint32_t dez=0; while(hex) { dez+=(add*(hex/div)); hex-=(div*(hex/div)); div/=10; add/=0x10; } return dez; } Vielen Dank, Yve
Yvonne J. schrieb: > Ich habe meinen Fehler nun gefunden, und es funktioniert. Na dann schau einmal ins Listing und laß ihn im Simulator laufen. Du wirst sehen, daß er deutlich größeren Code erzeugt und deutlich länger braucht, als die abgelehnten Standardlösungen. Warum willst Du unbedingt um Längen schlechteren Code benutzen, als den der Standard-Library des Compilers? Ist Dir der Flash zu groß, nimm nen kleineren MC. Ist er Dir zu schnell, schalte den CPU-Takt runter. Peter
Hallo Peter, danke für den Hinweis - hätte ich nicht gedacht. Ich habe nun doch die my_itoa geschichte genutzt und etwas getrixt. Danke, Yve
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.