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.
Probier mal ob sizeof(wchar_t)==2. Dann geht es vielleicht einfach mit einem L davor. google: C wide string literal
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).
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.