Hi, gibts irgendeine funktion im Studio die diese aufgabe löst, nicht itoa oder printf / sprintf, etwa "itod" ? wenn ja, wo? habe eine selbst gebastelt, läuft auch ganz gut, nur evtl. ist ja auch etwas im AVR STudio vorhanden.... Gruß, Thorsten uint16_t Hex2Dez (uint16_t hex) { uint16_t dez=0; while(hex>=10000) { hex-=10000; } while(hex>=1000) { dez+=0x1000; hex-=1000; } while(hex>=100) { dez+=0x100; hex-=100; } while(hex>=10) { dez+=0x10; hex-=10; } while(hex>=1) { dez+=0x1; hex-=1; } return dez; }
Nur zur Begriffsbestimmung: Du willst von Integer nach BCD umwandeln. (BCD = Binär codiertes Dezimalsystem) Vielleicht hilft dir das bei der Suche etwas weiter. EDIT: Allerdings gibt es da das Problem, dass du in 2 Bytes (uint16_t) nur 4 BCD-Stellen unterbringst. Dein integer-Wert darf also nur von 0...9999 gehen... :-o Aber ich habe den stillen und heimlichen Verdacht, dass du im tiefsten Inneren eigentlich ganz was Anderes willst.
Wozu brauchst Du denn packed BCD? Ich habs noch nie gebraucht. Wenn Du Zahlen anzeigen willst: Beitrag "Formatierte Zahlenausgabe in C" Peter
Hi, ja, ich benötige eine "dezimale" zahl in einem binären Format - nichts dramatisches, so wie man es "immer" braucht. Wenn in meiner Routine der Wert größer 9999 wird, dann schert sie das nicht viel, das Rückgabeformat war so gerade günstig, das die 4 BCD ziffern schön wieder in einen uint16_t passten, muss aber nicht "packed" sein, sollte allerdings auch nicht unnötig größer sein als das was ich dort oben getrieben habe....ich wollte eigentlich nur wissen ob das studio etwas vergleichbar einfaches wie meines mitbringt - ich gehe nun mal davon aus, das dies nicht so ist. Gruß, Thorsten
Thorsten S. schrieb: > ja, ich benötige eine "dezimale" zahl in einem binären Format - nichts > dramatisches, so wie man es "immer" braucht. "immer" ist relativ :-) > Rückgabeformat war so gerade günstig, das die 4 BCD ziffern schön wieder > in einen uint16_t passten, muss aber nicht "packed" sein, packed bedeutet in diesem Zusammenhang eigentlich nur, dass 2 'Ziffern' in 1 Byte untergebracht werden. > sollte > allerdings auch nicht unnötig größer sein als das was ich dort oben > getrieben habe....ich wollte eigentlich nur wissen ob das studio etwas > vergleichbar einfaches wie meines mitbringt 'Studio' bringt überhaupt nichts mit. Was du suchst, ist eine C-Funktion, die der C-Compiler (eigentlich seine Runtime Library) mitbringt. Und nein. Mangels Nachfrage gibt es keine derartige Standardfunktion. So wie du das hast, ist das schon ok.
Hi KH, deswegen ja auch die "" beim immer... 2 Ziffern in 1 Byte ähnlich wie 4 Ziffern in 2 Byte, ich denke es geht hervor das Peter und ich das selbe meinten... danke für die KLARE Rückmeldung. Studio und gcc+rtl sind für mich ein Paket, da ich sie nicht getrennt nutze, entschuldige diese "oberflächliche" ausdruckweise, aber es passte für mich einfach besser zum neveau der Frage. Gruß, Thorsten
Thorsten S. schrieb: > das > Rückgabeformat war so gerade günstig, das die 4 BCD ziffern schön wieder > in einen uint16_t passten Und was bringt das? Wichtig ist doch nur, welches Format Du hinterher brauchst. Unnötige Zwischenschritte kosten nur Code und Rechenzeit. Deinen Code:
1 | ...
|
2 | while(hex>=1) |
3 | {
|
4 | dez+=0x1; |
5 | hex-=1; |
6 | }
|
7 | ...
|
kann man einfacher schreiben:
1 | dez += hex; |
> ich gehe nun mal davon > aus, das dies nicht so ist. Das stimmt. BCD-Arithmetik wird kaum noch verwendet. Peter
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.