2011-02-04 4 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 specifierNSString이 아닌 16 비트 유니 코드 문자 (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

감사합니다. –

관련 문제