2

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 何か足りない…?

4

2 に答える 2

5

%Cフォーマット指定子は、unichar入力として . ではなく16 ビット Unicode 文字 ( ) を取りますNSString。を渡していますがNSString、これは整数文字として再解釈されています。文字列は実行するたびにメモリ内の異なるアドレスに格納できるため、そのアドレスを整数として取得します。これが、コードを実行するたびに異なる漢字を取得する理由です。

文字を整数として渡すだけです。

unichar decimal = 12298;
NSString *charStr = [NSString stringWithFormat:@"%C", decimal];
// charStr is now a string containing the single character U+300A,
// LEFT DOUBLE ANGLE BRACKET
于 2011-02-04T19:35:13.357 に答える
3

どう-[NSString characterAtIndex:]ですか?文字インデックスが必要で、unichar.

于 2011-02-04T19:35:01.140 に答える