Forum: Mikrocontroller und Digitale Elektronik uIP int in char casten und dann versenden


von Birger M (Gast)


Lesenswert?

Hallo,

ich möchte gerne einen int-Wert in einen char casten und diesen dann
mittels uip_send versenden.

Einen char kann ich ohne Probleme wie folgt versenden:

char mess [20] ="zei";
uip_send(mess, 20);

oder:
char mess [20] = {'w','o','r','t'}
uip_send(mess, 20);

oder:
char mess [20];
mess[0] = 'z';
mess[1] = 'e';
uip_send(mess, 20);


Nun möchte ich allerdings einen int-Wert versenden. Mit:
int mess = 2;
uip_send(mess, 20);

geht es nicht.

Ich weiß nicht ob ich den int in einen char casten muss oder ob es auch
ohne casten geht. Nur weiß ich nicht wie ich genau casten muss.
Folgendes hab ich probiert:

int i = 2;
char mess = (char) i;
uip_send(mess, 20);

Der Compiler schmeißt mir hierbei keinen Fehler, allerdings kommt am
Ende nicht die 2 heraus, sondern irgendwelche Sonderzeichen.

Ich würde mich freuen wenn mir jemand helfen kann.

Birger

von Christoph _. (chris)


Lesenswert?

Du willst nicht casten, du willst eine Zahl in einen String umwandeln.
Mal dir bitte mal die Binärdarstellung des Strings "123" und die der
Zahl 123 auf. Dann siehst du, was ich meine.

Du glaubst mir hoffentlich, wenn ich behaupte, dass du nicht der erste
mit diesem Problem bist? Es gibt einige Standardlösungen, die hier
schon sehr oft gepostet wurden, eine ist z.B. sprintf. Falls du C++
programmierst (enden deine Dateien auf .cpp? dann ja) ist sprintf aber
viel zu kompliziert, dann würde man z.B. std::ostringstream nehmen oder
noch viel einfacher: boost::lexical_cast.

von Simon K. (simon) Benutzerseite


Lesenswert?

>>
 dann würde man z.B. std::ostringstream nehmen oder
noch viel einfacher: boost::lexical_cast

C++ für AVR? Gibts doch garnicht.

von Birger M (Gast)


Lesenswert?

Genau ich möchte einen int-Wert in einen String umwandeln.
Ich programmiere in C und bin ein Anfänger auf diesem Gebiet.

Aber ich habe das Problem jetzt gelöst, indem ich hier im Forum nach
"string int" gesucht habe. Ich weiß man sollte erst suchen und dann
fragen, nur hatte ich zuvor nach den falschen Suchbegriffen geschaut.

Ich hab es mit dem Beispiel:

int wert = 345;
char string[4];
itoa(wert,string,10);

gelöst.

Aber trotzdem danke für eure Bemühungen!!

von Christoph _. (chris)


Lesenswert?

> C++ für AVR? Gibts doch garnicht.

Sicher gibt es das. Ob allerdings die STL und boost dazu kompatibel
sind, ist mir nicht genau bekannt.
Auf jeden Fall müsste man dafür selbst Hand anlegen, bei avrlibc ist
das nicht dabei.

Aber mal was anderes: Wo hat der OP geschrieben, dass er für AVR
programmiert?

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.