Можно ли конвертировать NSString в Unichar? - PullRequest
2 голосов
/ 04 февраля 2011

У меня есть объект 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); 

Когда я вижу журнал, каждый раз, когда я запускаю свой код, он выдает другой символ.я что-то упустил ...?

Ответы [ 2 ]

5 голосов
/ 04 февраля 2011

Спецификатор формата %C принимает 16-битный символ Unicode (unichar) в качестве ввода, а не 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
3 голосов
/ 04 февраля 2011

Как насчет -[NSString characterAtIndex:]?Он хочет индекс символа и возвращает unichar.

...