unsigned short in const char* konvertieren ?
-
Hallo zusammen,wie kann man unsigned short in const char* konvertieren?
Ich bekomme eine Zeichenkette als unsigned short, die auch Umlaute beihnhaltet, wobei ich es nicht weiss, wie unsigned short Umlaute beihnhalten kann??
Danke
-
leonReif schrieb:
wie kann man unsigned short in const char* konvertieren?
Dafür braucht man entsprechende Funktionen, zB sprintf. Versuch erst gar nicht mit Casts zu arbeiten.
leonReif schrieb:
Ich bekomme eine Zeichenkette als unsigned short, die auch Umlaute beihnhaltet, wobei ich es nicht weiss, wie unsigned short Umlaute beihnhalten kann??
unsigned short speichert integrale Werte, diese enthalten keine Umlaute. Irgendwie werde ich aus deiner Beschreibung nicht schlau. Willst du eine Zeichenkette in ein unsigned short umwandeln? Wenn ja, warum enthält dann die Zeichenkette Umlaute? Vielleicht solltest du das Szenario nochmal etwas ausführlicher breschreiben.
-
Hi!
Ich arbeite mit JNI (Java Native Interface). Ich benutzer die JNI - Methode NewStringUTF(const char*), um das Ergebnis als jstring zurück geben.
Es gibt fremde C-Funktionen, die als Ergebnis unsigned short zurück liefern.
Ich muss unter C/C++ die JNI-Methode NewStringUTF verwenden. Deshalb muss ich das Ergebnis, dass als unsigned short vorliegt in const char* konvertieren.unsigned short ergebnis = foo();
const char* szText = konvert ergebnis zu const char*return env->NewStringUTF(szText);
Wenn ich heraus finde, wie man unsigned short in const char* konvertiert, dann kann ich auch diese Routine bei den Funktionen einsetzen, die WCHAR mit Umlaute zurück liefern!
-
unsigned short ist ein Zahlentyp, der Werte zwischen 0 und 65536 (mindestens) aufnehmen kann, was das mit Umlauten zu tun hat, weiß ich auch nicht. char* ist Pointer auf ein Zeichen - dahinter verbirgt sich normalerweise ein (null-terminierter) C-String beliebiger Länge.
Nun weiß ich leider nicht, was in den short-Rückgabewerten drin steht und was du hinten rausbekommen willst, aber ein erster Ansatz wäre "sprintf(szText,"%d",ergebnis)" (wandelt die Zahl in eine Klartext-Darstellung um).
-
Hi!
Hier ist meine Lösung:
unsigned short ergebnis = foo(); const unsigned short* pErgebnis = &ergebnis; const int SIZE = 2; char szText[SIZE] = {0}; WideCharToMultiByte(CP_ACP, 0, pErgebnis , -1, szText, SIZE, NULL, NULL );
-
WideCharToMultiByte ist für dein Problem keine Lösung, denn du hast keinen wide-character String, sondern ein unsigned short. Und das, was du mit dem Zeiger machst, ist ganz übel.
Die Lösung für dein Problem ist eine lexikalische Umwandlung von Ganzzahl zu String. Dazu fällt mir momentan folgende Möglichkeit ein:unsigned short ergebnis = foo(); // ... char text[16]; snprintf(text, sizeof(text), "%hu", ergebnis); // ... bar = env->NewStringUTF(text);
-
Danke
-
Unter Windows werden MultiByte Characters als wchar_t (unter Windows 16 Bit) gespeichert was eigentlich nur ein typedef für unsigned short ist.