0

大きなユニコード文字(0x10000+)を、long最終的にに変換する必要がある型として格納していNSStringsます。小さいUnicode文字は、として作成できunicharNSStringを使用して作成できます。

[NSString stringWithCharacters:(const unichar *)characters length:(NSUInteger)length]

NSStringしたがって、 Unicodeの長い値からaを取得する最良の方法は、最初に値unichar*からaを取得することだと思いlongます。私がこれをどのように行うかについてのアイデアはありますか?

4

1 に答える 1

1

long値をsとして保存する理由はありますか?Unicodeストレージの場合、値をとして保存するだけで済みます。これにより、次のようUInt32にデータを簡単に解釈できます。UTF-32

int numberOfChars = 3;
UInt32* yourStringBuffer = malloc(sizeof(UInt32) * numberOfChars);
yourStringBuffer[0] = 0x2F8DB; //杞
yourStringBuffer[1] = 0x2318;  //⌘
yourStringBuffer[2] = 0x263A;  //☺

NSData* stringData = [NSData dataWithBytes:yourStringBuffer length:sizeof(UInt32) * numberOfChars];

//set the encoding according to the current byte order
NSStringEncoding encoding;
if(CFByteOrderGetCurrent() == CFByteOrderBigEndian)
    encoding = NSUTF32BigEndianStringEncoding;
else
    encoding = NSUTF32LittleEndianStringEncoding;

NSString* string = [[NSString alloc] initWithData:stringData encoding:encoding];

free(yourStringBuffer);

NSLog(@"%@",string);

//output: 杞⌘☺
于 2010-04-21T02:01:37.253 に答える