Forum: Compiler & IDEs Im String hex Werte eingeben


von Spidii (Gast)


Lesenswert?

Schönen Abend alle zusammen,

ich möchte Fragen, ob es möglich ist, in einem String einzelne Zeichen
in Hex (oder Dezimal) werten einzugeben?

Also quasi so:

char_variable = "Sch,0x94,nen Abend";

Hier als Beispiel mit 'ö'.

Danke in Voraus.

Mit freundlichen Grüßen

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mal angenommen, Du redest von der Angabe von Stringkonstanten in C oder
C++, dann prinzipiell ja.

  char_variable = "Sch\x94nen Abend";

Die Auswertung der hexadezimalen Konstante stoppt am ersten ungültigen
Zeichen;

  char_variable = "Sch\x940nen Abend";

wird daher zu seltsamen Effekten führen, da 0 ein gültiges Zeichen ist,
damit wird 0x940 gelesen ...

Daher empfiehlt sich folgende Schreibweise:

  char_variable = "Sch\x94""nen Abend";

Alternativ können auch oktale Zahlen verwendet werden:

  char_variable = "Sch\0224nen Abend";

Eine Codierung für Dezimalzahlen gibt es allerdings nicht.

von Karl H. (kbuchegg)


Lesenswert?

char string[] = "Sch\x94nen Abend";

Das Stichwort (zur Suche mit Google= lautet:
Escape Sequence
Wann immer Du in C irgendetwas spezielles in einem
String brauchst, was nicht durch die druckbaren
Zeichen im 7-bit ASCII Zeichensatz abgedeckt ist,
braucht man eine Escape Sequence.

Übrigens kann es sinnvoll sein, den String in 3 Teil-Strings
zu zerlegen, da der Parser sonst unter Umständen Teile
des nachfolgenden Textes mit in die Hex-Zahl reinnimmt.

char string[] = "Sch" "\x94" "nen Abend";

Diese Loesung beruht auf der Verpflichtung des Compilers
einzelne String Sequenzen zu einer einzigen String Sequenz
zusammenzufassen. Damit ermöglicht sich dann auch Folgendes:

#define OE_STRING "\x94"

char string[] = "Sch" OE_STRING "nen Abend";

ist n'bischen besser zu lesen als mit den Hex Codes
direkt im String.

von spidii (Gast)


Lesenswert?

Hallo Rufus, kbuchegg,

danke für eure Hilfe, hat mir sehr geholfen.

mfg

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.