mikrocontroller.net

Forum: Compiler & IDEs Im String hex Werte eingeben


Autor: Spidii (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spidii (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rufus, kbuchegg,

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

mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.