www.mikrocontroller.net

Forum: PC-Programmierung ASCII zu UTF-16 mit Präprozessor


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Alexander F. (alexf91)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Guten Abend!

Um bei meinem derzeitigen Projekt benötige ich eine Präprozessorroutine, 
die mir normale ASCII Strings in UTF-16 Strings umwandelt.
Vereinfachen würde eine solche Routine vor allem die Konfiguration von 
USB Stringdeskriptoren (diese müssen in UTF-16 angegeben werden). Das 
Programm soll auf einem Mikrocontroller laufen, die Konvertierung sollte 
daher bereits vorm Kompilieren geschenen. Ich habe den Beitrag trotzdem 
unter PC-Programmierung gepostet, da das Problem ansonsten 
Prozessor-/Plattformunabhängig ist.

Im Prinzip stelle ich mir das so vor, dass aus einem 8 Bit ASCII Wert 
ein 16 Bit Wert wird, wie ich das jedoch auf Strings anwende ist mir 
schleierhaft.

Funktionieren würde das ganze natürlich auch ohne eine solche Routine, 
jedoch lassen sich die Source-Files um einiges besser lesen bzw. 
anpassen.

Autor: sebastian (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Probier mal ob sizeof(wchar_t)==2.
Dann geht es vielleicht einfach mit einem L davor.
google: C wide string literal

Autor: Rolf Magnus (rmagnus)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Alexander F. schrieb:
> Im Prinzip stelle ich mir das so vor, dass aus einem 8 Bit ASCII Wert
> ein 16 Bit Wert wird,

ASCII hat nur 7 Bit.

> wie ich das jedoch auf Strings anwende ist mir schleierhaft.

Das ist simpel. Einfach nach jedem Zeichen ein Nullbyte einfügen (oder 
davor - je nachdem, ob big oder little endian benötigt wird).

Autor: Joachim Drechsel (Firma: JDCC) (scheppertreiber)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Alexander F. schrieb:
> benötige ich eine Präprozessorroutine,

Dein Compiler kann utf-16 lesen ?

Geschickter wäre das im Programm zB bei der Zeichenausgabe
einzubauen (wie es Rolf borgeschlagen hat). Halber Platzbedarf.

Autor: Alexander F. (alexf91)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ich verwende jetzt einfach uint16_t mit einem vorgestelltem L vor dem 
String.
Die Sache mit dem Speicherplatz ist mir durchaus bewusst, jedoch ist mir 
das bei 512k Flash nicht so wichtig.

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net