2011-02-04 12 views
2

私はNSStringオブジェクトを持っていてunicharに変更したいと思います。NSStringをunicharに変換することが可能です

int decimal = [[temp substringFromIndex:2] intValue]; // decimal = 12298 

NSString *hex = [NSString stringWithFormat:@"0x%x", decimal]; // hex = 0x300a 

NSString *chineseChar = [NSString stringWithFormat:@"%C", hex]; 

// This statement log a different Chinese char every time I run this code 
NSLog(@"%@",chineseChar); 

ログを見ると、コードを実行するたびに異なる文字が表示されます。 m何かが見当たりません...?

答えて

5

%C format specifierは、NSStringではなく、16ビットのUnicode文字(unichar)を入力として受け取ります。 NSStringを渡していますが、これは整数文字として再解釈されています。文字列を実行するたびにメモリ内の別のアドレスに格納することができるため、そのアドレスは整数として取得されるため、コードを実行するたびに別の中国語文字を取得できます。

ちょうど整数として文字を渡し:魔法のように動作dude..It

unichar decimal = 12298; 
NSString *charStr = [NSString stringWithFormat:@"%C", decimal]; 
// charStr is now a string containing the single character U+300A, 
// LEFT DOUBLE ANGLE BRACKET 
+0

感謝を。 –

関連する問題