gibt es eine andere Möglichkeit außer mit
1 | sprintf(string,"%i",int) |
einen interger-Wert in einen ASCII-Char umzuwandeln (bräuchte dies für die UART-Kommunikation von Rechner zu µC)
|
Forum: Compiler & IDEs int in ASCII Zeichen umwandelngibt es eine andere Möglichkeit außer mit
einen interger-Wert in einen ASCII-Char umzuwandeln (bräuchte dies für die UART-Kommunikation von Rechner zu µC) Ja, gibt es. Schau doch einfach mal in die stdlib.h. Da stehen Funktionen wie itoa, ltoa... itoa hab ich schon probiert, da bekomm ich nur wirre Zeichen zurück bräucht im Prinzip irgend eine Fkt. welche mir aus uint8_t ein char macht z.B. aus 65-->A da
zu speicherintensiv sein soll, wollt ich ne Fkt. welche das evtl. besser erledigt bei dem Beispiel sollte "A" in string stehen Nein. Das kann ich nicht glauben. (Fassung bewahren) Probiere doch mal folgendes aus:
Und? hast recht, es funktioniert habs jetzt so gemacht:
hatte "s" vorher als normalen char deklariert, wenn ich aber den ASCII zahlenwert übergebe und die "Ende-NULL" anfüge klapt alles wunderbar Dank!! Warum so umständlich? Wenn Du nur ein Zeichen speichern willst, musst Du keinen String verwenden:
is schon klar, aber ich will sowieso nicht nur ein zeichen vom rechner empfangen, sondern mach da noch ne schleife bis /n kommt, halt bis ENTER gedrückt wird da muss ich die einzelnen char doch auch in einem buffer string erst mal zusammenfassen (mein problem lag eigentlich in der uart_puts, die sendet den übergebenen string bis /n und bei nem char sucht die sich halt tot) Deine uart_puts mag bis \n senden, eigentlich aber sollte sie bis zum Stringende senden, so wie es jede andere puts-Implementierung auch tut. Und das Stringende wird durch \0 gekennzeichnet. hast recht, hab jetzt
Sieh Dir mal das #define von NULL an ... das ist nicht ganz sauber, NULL als Stringterminator anzunehmen. Knapper:
moment, ich hatte es ganz am anfang so ähnlich
also lags doch nicht daran??? jetzt fange ich langsam an zu zweifeln ok, jetzt sollte ich wohl mal den ganzen code posten:
weil c nur ein Zeichen ist und kein string (d.h. ein _array_von chars) ist. just for fun: mach mal "uart_puts(&c)" ;-) dann siehst du, dass Arrays als Pointer übergeben werden und dass strings in C "\0" terminiert sind Weil c ein einzelner Character ist und uart_puts einen Zeiger auf einen String mit Nullterminator erwartet! Wenn Du die Funktionen doch selbst geschrieben hast, dann solltest Du auch wissen, welche Parameter sie haben. Steht doch wirklich alles in Deinem geposteten Code! bin trotzdem von ausgegangen, dass er damit klar kommt obwohl das "ende zeichen" beim char fehlt hätt ja sein könn, dass der compiler merkt, dass das nur ein char is, wenns denn schon so definiert wurde (es kommt ja nicht mal ne warnung) und dass er weiss, dass die länge halt nur 1 ist beim feld is es ja klar, da wird halt immer auf NULL (bzw. \0)geprüft 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
Noch kein Account? Hier anmelden.
|
|