Was bedeutet diese Befehlszeile?

OP Persönliche Seite #874709
Lesenswert?

Hi Leute,

hab da so ein kleinen Problem bezüglich einer Codezeile.
Ich verstehe sie einfach nicht. Habe sie schon auseinandergenommen und 
nur Teile davon ausgeführt aber irgendwie komme ich nicht dahinter. 
Vieleicht könnt ihr mir helfen.
1
printf("\x02R%.2X%.2X%.2X%.2X%.2X\x03\r", tag[0], tag[1], tag[2], tag[3], tag[4]);
#874715
Lesenswert?

Es werden fünf Variablen (tag[0]...tag[4]) ausgegeben, und zwar jeweils 
2-stellig in Hexadezimal mit Großbuchstaben (ohne Angabe der minimalen 
Feldbreite, deshalb keine Angabe vor dem Punkt). Am Anfang wird ein STX 
(0x02, Start of text)-Zeichen, ein 'R' und am Ende ein ETX (0x03, End of 
text) ausgegeben.

"Befehle" gibt es in C übrigens nicht, nur Anweisungen und Operatoren...
Moderator Persönliche Seite #874716
Lesenswert?

Die \x02 und \x03 ergeben die ASCII-Zeichen <STX> und <ETX>, sowas
nimmt man gern für einfaches RS-232-Framing.

Das R wird 1:1 ausgegeben.

Die %.2X führen eine Hexadezimalwandlung durch, wobei als Genauigkeit
2 Stellen gefordert sind.  Das führt dazu, dass immer (mindestens)
zwei Stellen ausgegeben werden, ggf. halt mit 0 gefüllt in der 1.
Stelle.  Das Format %02X wäre ein Äquivalent dafür.  Die 10 hexadezi-
malen Stellen werden ohne Zwischenraum aneinander gefügt.

Das abschließende \r (ASCII <CR>) beendet den Datensatz.
Gast #874762
Lesenswert?

Eine Formatierung der Ausgabe hat normalerweise niemals einfluss auf den 
Inhalt der Variable... Deshalb ist dieser printf-Ausdruck unerheblich 
für dein eigentliches Problem. Schau lieber mal von welchem Typ die 
Variablen sind und wo sie initialisiert/zugewiesen/geändert werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren