Forum: Compiler & IDEs mit sscanf Hex Zahlen selektieren


von olli (Gast)


Lesenswert?

Hallo,
ich empfange über die Uart die Zeichenkette   41 0C 12 BA\n . Nun möchte 
ich aus dieser Kette die beiden letzten Hex(12 und BA) rausholen und als 
int speichern. Würde das so richrig sein?
int temp1
int temp2
uint8_t rx_buffer[128];

sscanf(rx_buffer,"%*s %*s %X %X",&temp1,&temp2);
Danke und Gruss

von Klaus W. (mfgkw)


Lesenswert?

sieht ok aus.
Außer, daß zu %x eigentlich unsigned int gehört, nicht int.

Ach ja, und ein paar Semikolon fehlen natürlich :-)

PS:

Was auch fehlt, ist der Rückgabewert von sscanf().
Daran kann man erkennen, wenn es nicht geklappt hat und entsprechend 
reagieren anstatt mit Phantasiewerten weiter zu arbeiten.

von olli (Gast)


Lesenswert?

Danke für die Antwort!! Muss der Rückgabewert dringend sein? Nur aus 
Interesse?!
Gruss

von Klaus W. (mfgkw)


Lesenswert?

Wenn du dir absolut sicher bist, daß die Eingabe vernünftig ist,
kann man den Rückgabewert ignorieren.
Aber was ist schon sicher außer dem Tod?

Deshalb ist es im Zweifelsfall immer besser, unsinnige
Eingaben zu erkennen und wie auch immer zu reagieren, als
unbemerkt mit unsinnigen Werten weiter zu rechnen.
An solchen Dingen sieht man, wer pfuscht.

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.