mikrocontroller.net

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


Autor: Birger M (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

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

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

Autor: Birger M (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.