Forum: PC-Programmierung Frage zu Hexstring in ASCII


von Gast (Gast)


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);








}

von Peter (Gast)


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.

von Matthias (Gast)


Lesenswert?

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

von Gast (Gast)


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!

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.