Hi,
ich habe arge Schwierigkeiten, einen C-String zu kreieren, der einen Hexwert enthält und danach eine beliebige Zeichenfolge.
"\x02Z" ... liefert einen 2-Zeichen langen String mit den Werten hex. 02 5A
"\x02A" ... liefert einen 1-Zeichen langen String mit dem Wert hex. 2A
Würde ich den String mit sprintf zusammensetzen, gäbe es das Problem nicht, wäre aber höherer Aufwand. Ich hätte es aber gerne so, dass ich auf eindeutige Art und weise einen String bereits in den Code schreiben kann.
Hier macht mir der C-Compiler einen Strich durch die Rechnung, weil er irgendwie die 0 auffrisst nach belieben.
Gibt es vieleicht eine Quotation, die das Ende der Hex-Eingabe eindeutig bestimmen kann, oder klar festlegt, dass der Hexwert exakt 2 Zeichen enthalten soll?
Also bei Oktal funktioniert das übrigens; 3 Zeichen werden da nicht überschritten, so dass man sauber codieren kann. Aber ich hätte eben gerne Hex.
Ah, ich habs (da hat doch noch was aus einer uralten Zeit geklingelt):
"\x02""A" liefert einen 2-Zeichen langen String mit den Werten hex. 02 41
Gruß
Frage zu char in C *gelöst*
Re: Frage zu char in C *gelöst*
Schoen, dass du dir schon selbst geholfen hast. Die Wikipedia haette es sonst auch gekonnt: https://en.wikipedia.org/wiki/Escape_se ... _sequences
Use ed once in a while!
- weedy
- Beiträge: 585
- Registriert: 02.11.2002 21:47:49
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Frage zu char in C *gelöst*
Danke für den Link.Meillo hat geschrieben:Schoen, dass du dir schon selbst geholfen hast. Die Wikipedia haette es sonst auch gekonnt: https://en.wikipedia.org/wiki/Escape_se ... _sequences
Dass ich das überhaupt untersucht habe, hat noch einen andere Grund. Das Programm printf aus den coreutils scheint da ganz anders zu funktionieren.
Nun weiss ich jedenfalls, dass hier die hex-darstellung eindeutig auf 2 Zeichen beschränkt ist:
Code: Alles auswählen
$ printf "\x61bc\n"
abc
Code: Alles auswählen
$ printf -- "a\x00b\x00c" | xargs -n1 --null echo
a
b
c
Was aber funktionieren müsste ist:
Code: Alles auswählen
char str[]="a\0""b\0"c";
Gruß