Go Down

Topic: Intger zu ASCII (Read 581 times) previous topic - next topic

H75FK

Hallo,

ich suche nach einer leichten Funktion, die mir eine Integer-Zahl (Die Zahl ist zwischen 800-7000) in ein ASCII-Code umwandelt.

Ich will nämlich einen Client Daten rüberschicken, die bei mir im Programm als Integer abgelegt sind.

jurs

Hallo,

ich suche nach einer leichten Funktion, die mir eine Integer-Zahl (Die Zahl ist zwischen 800-7000) in ein ASCII-Code umwandelt.

Ich will nämlich einen Client Daten rüberschicken, die bei mir im Programm als Integer abgelegt sind.
http://www.cplusplus.com/reference/cstdlib/itoa/

H75FK

#2
Jun 23, 2017, 11:32 am Last Edit: Jun 23, 2017, 11:38 am by H75FK
und was ist die Basis von ASCII?
Code: [Select]


...

int a=1234;
char buffer[10];
itoa(a,buffer,10);



Buffer ist aber dann 1234.

combie

#3
Jun 23, 2017, 11:54 am Last Edit: Jun 23, 2017, 11:55 am by combie
Quote
und was ist die Basis von ASCII?
?


Quote
Buffer ist aber dann 1234.
Nein!
Der Buffer enthält dann "1234".
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

H75FK

Aber mein Ziel war es ja, die 1234 in ASCII umzuwandlen.

combie

#5
Jun 23, 2017, 12:10 pm Last Edit: Jun 23, 2017, 12:12 pm by combie
Aber mein Ziel war es ja, die 1234 in ASCII umzuwandlen.
Genau dafür wurde die Funktion itoa() erfunden.

Was gefällt dir an deiner erfolgreichen Anwendung dieser Funktion nicht?

Tipp:
Vielleicht solltest du mal nachschlagen, was ASCII überhaupt bedeutet.
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

H75FK

Ne ich weiß, was ASCII ist.
1 = 49
2 = 50
3 = 51
4 = 52

Diese Zahlen müsste ich dann ausgeben können, wenn ich di Funktion itoa() verwende. Dies habe ich ja auch in meinem Code verwendet.

jurs

#7
Jun 23, 2017, 12:14 pm Last Edit: Jun 23, 2017, 12:21 pm by jurs
Aber mein Ziel war es ja, die 1234 in ASCII umzuwandlen.
Machst du soch auch. Umwandlung in einen nullterminierten ASCII-String. Der dritte Parameter in itoa() gibt die Zahlenbasis vor. 10==> Dezimal-ASCII: 16==> Hexadezimal ASCII. 2==> Binär-ASCII.

Wenn Du statt der ASCII-Zeichen die Dezimalcodes der ASCII-Zeichen bekommen möchtest, kannst Du das mit einer anschließenden for-Schleife über alle Zeichen des Strings erledigen. itoa() macht nur die Konvertierung on einem RAM-Puffer, aber erzeugt keine Ausgabe auf Serial.

combie

Quote
Diese Zahlen müsste ich dann ausgeben können, wenn ich di Funktion itoa() verwende.
Natürlich!

Die Frage ist dabei, für mich, warum gibtst du nicht das aus, was du ausgeben willst?
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

H75FK

Irgendwie komme ich grad nicht mit!
Müsste ASCII-Zeichen nicht im buffer sein?=

combie

Irgendwie komme ich grad nicht mit!
Offensichtlich!


Müsste ASCII-Zeichen nicht im buffer sein?=
Sind sie.

Code: [Select]

void setup()
{
  Serial.begin(9600);

 
  int a=1234;
  char buffer[10];
  itoa(a,buffer,10);

  for(int i = 0; i<strlen(buffer);i++)
  {
      Serial.print("Zeichen: "); Serial.println((char)buffer[i]);
      Serial.print("Code: ");    Serial.println((byte)buffer[i]);
      Serial.println();
  }

}


void loop()
{
 
 
}
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

H75FK

Achso, jetzt raffe ich die Funktion. Dankeschön!

Serenifly

print() macht das übrigens auch. Und das geht mit vielen Arduino Klassen die Daten senden. Eine Ausnahme ist z.B. VirtualWire

Go Up