mikrocontroller.net

Forum: PC-Programmierung Frage zu Hexstring in ASCII


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, versuche immer noch C zu lernen.
Hab mal einen String der  Hexadezimalzahlen enthält versucht wieder in 
einen String mit den passenden ASCII-Zeichen umzuwandeln. Das klappt 
soweit. Nur hab ich ma wieder das Problem, das  im Puffer bei der 
Ausgabe mal wieder zusäztlich noch irgendwelcher Mist drin steht. Warum 
eigentlich. Ich habe die Feldgrößen ja genau angegeben. Oder liegt das 
an der help Variable, muss ich da vielleicht noch das 
Terminierungszeichen mit angeben. Genauso ist mir noch nicht ganz der 
Unterschied zwischen ++u und u++ ganz klar. Also u++ erhöht einfach, 
aber ++u doch auch. Bei der Ausgabe kommt bei mir das selbe raus.  Find 
es leider in meinem C-Buch auch nicht. Kann das einer mir vieleicht 
nochmal schnell sagen.



char x[]="34 61 48 61 61";
test2(x);




void test2(char* wort)
{
int x= strlen(wort);
unsigned char help[2];
unsigned char str[5];

int zahldec;
int u;
int r=0;


for(u=0;u<5;u++)
{

help[0]=wort[r];
help[1]=wort[r+1];

sscanf(help, "%x", &zahldec);
r=r+3;
str[u]=zahldec;

}

printf("%s",str);








}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> dein Verfahren ist nicht wirklich schön - es geht auch etwas schneller. Die 
suche finden bestimmt schon 1000 Threads zu dem Thema, aber wir können ja erstmal 
die Felher entfernen.

unsigned char help[2];

help[0]=wort[r];
help[1]=wort[r+1];

wenn help nur 2 Zeichen lang ist, hast du kein Platz für ein 0byte um 
den String abzuschliessen.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Unterschied zwischen ++u und u++ ganz klar
siehe: Preinkrement, Postinkrement, Inkrementoperator ;)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die Stichwörter, jetzt hab ich es gefunden im Buch. Also lag 
es doch am Terminierungszeichen, wusste da gab es doch einen Unterschied 
zwischen char array(ohne\0) und string(mit\0). Danke!

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.