UCS2/UTF16 Konvertierung nach NSString

Wer bestehende Daten konvertieren möchte, die Windows 16bit wchat_t (UCS2 encoded) Strings enthalten und diese in einen NSString laden mag, dem ist mit folgendem Code-Schnippsel geholfen:



NSString *str = nil;
char szBuffer[100]; // stream that contains UTF16 LE encoded string
NSUInteger nLenBuffer =
0; // The number of bytes to use from bytes.
// typical "strlen(szBuffer) * 2"
for (int i= 0;i<sizeof(szBuffer)/2;i++) {
if ( (szBuffer[i*2] == 0) && (szBuffer[i*2+1] == 0)
break;
nLenBuffer++;
}
str = [[[
NSString alloc] initWithBytes:(const void*)szBuffer
length:(NSUInteger)(nLenBuffer * sizeof(unsigned short))
encoding:NSUTF16LittleEndianStringEncoding] autorelease ];