char zu int umwandeln

Gast #4813103
Hallo.
Ich versuche eine empfangenen char als einen Integer wert zu nutzen.



while  (vw_get_message(message,&messageLength)){
     Serial.println((char*)message);

    }

   tone (poli,(char*)message,300);

Das war nur ein Gedanke von mir, welcher nicht funktioniert :(
Könnte mich jemand mit Wissen bereichern, um dieses Problem zu lösen?

:D
Ma.
Gast #4813141
Also eigentlich habe ich (mala :D)einen Sensor am rf Sender der den Wert 
also eine String (von 0-1000 ) zu diesem empfänger sendet.
Der soll den Wert dann weiter zB. an den Piezo geben.
Gast #4813209
Ich bereichere dich gerne und offen: was dir fehlt sind die Grundlage 
der Informatik.

Wenn du nicht in der Lage bist, ein solches "Problem" selbst zu lösen - 
aber immerhin die Zeit&Nerven hast, hier danach zu fragen - würde ich an 
deiner Stelle den Beruf(-swunsch) überdenken oder wenigstens besagte 
Gundlagen nachholen; aber auf jeden Fall: mich trollen.
Gast #4813306
mala schrieb:
> Hallo.
> Ich versuche eine empfangenen char als einen Integer wert zu nutzen.
>
> while  (vw_get_message(message,&messageLength)){
>      Serial.println((char*)message);
>
>     }
>
>    tone (poli,(char*)message,300);
>
> Das war nur ein Gedanke von mir, welcher nicht funktioniert :(
> Könnte mich jemand mit Wissen bereichern, um dieses Problem zu lösen?
>
> :D
> Ma.


du castest ja den pointer "message" nach einen pointer mit Datentyp 
char.

tut erst mal nicht viel zur Sache, wie du castest, damit hast du nur die 
Schrittweite des pointers auf ein Byte beschränkt.

Wichtig ist es, wie man die Daten, auf die der Pointer zeigt, 
interpretiert.

die müssen z.B. bei printf mit printf("%s", &message) aufgerufen werden.

Oder bei einem Charakter mit printf("%c", message).


Ansonsten kannst du von einem ASCII-Zeichen '1' z.b., von dessen 
numerischen Wert 0x30 abziehen (Offset), dann hast du eine numerische 1.

Genauso bei den ASCII-Zeichen '0' - '9'.
Gast #4815583
Flix schrieb:
> Ansonsten kannst du von einem ASCII-Zeichen '1' z.b., von dessen
> numerischen Wert 0x30 abziehen (Offset), dann hast du eine numerische 1.

Woher weisst du, dass es sich um ASCII-Zeichen und nicht um EBCDIC 
handelt ;-)
#4815681
Flak schrieb:
> Flix schrieb:
>> Ansonsten kannst du von einem ASCII-Zeichen '1' z.b., von dessen
>> numerischen Wert 0x30 abziehen (Offset), dann hast du eine numerische 1.
>
> Woher weisst du, dass es sich um ASCII-Zeichen und nicht um EBCDIC
> handelt ;-)

Deshalb macht man einfach:

Dirk B. schrieb:
> Bei nur einem char geht *message-'0'

Das funktioniert immer, solange der Zeichensatz der ankommenden Zeichen 
der selbe ist, wie das "execution character set" des Compilers.
#4815994
Rufus Τ. F. schrieb:
> Flak schrieb:
>> Woher weisst du, dass es sich um ASCII-Zeichen und nicht um EBCDIC
>> handelt
>
> Wie groß ist die Wahrscheinlichkeit, im realen Leben jemals außerhalb
> einer Informatiklehrveranstaltung damit konfrontiert zu werden?

In den 80ern ist man ähnlich mit der Idee umgegangen, dass es mal ein 
Jahr 2000 geben könnte. Und dann hat man haufenweise Entwickler mit 
fürstlicher Bezahlung aus dem Ruhestand holen müssen. Gut - für die 
Entwickler selbst war das natürlich sehr schön.
Was ich damit sagen will: Es ist besser Annahmen zu vermeiden, die man 
nicht unbedingt treffen muss. Wie heitß es so schön? "Assumption is the 
mother of all fuck ups"
Persönliche Seite #4816006
Rolf M. schrieb:
> Es ist besser Annahmen zu vermeiden, die man nicht unbedingt treffen
> muss.

Gewiss. Das aber im Kontext mit einer obsoleten und besonders lausigen 
Zeichencodierung zu erwähnen, halte ich für ... spannend.

Der Siegeszug von ASCII und allen darauf aufbauenden Zeichencodierungen 
(was immerhin Unicode mit all' seinen Schattierungen mit einbezieht) ist 
nichts neues.

Ansonsten: Man sollte im Code hinschreiben, was man erreichen will, d.h. 
man schreibt '0' statt 0x30. Egal, welche Zeichencodierung verwendet 
wird.

Wobei auch das eine Grundannahme trifft, nämlich daß die Zeichen '0'-'9' 
in der verwendeten Zeichencodierung streng monoton ansteigend angeordnet 
sind.

Wenn man schon EBCDIC nicht ausschließt, sollte man auch davon ausgehen, 
daß das anders sein könnte ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.