2014-01-29 55 views
2

所以,我知道如何將Unicode十六進制代碼轉換成由通過代碼中引用的Unicode字符的一個NSString:ObjC/iOS:如何檢索字符的unicode十六進制代碼?

NSString *ucStr = @"\\u004A"; // hex code for capital J 
NSString *theLetter = [ucStr mutableCopy]; 
CFStringRef transform = CFSTR("Any-Hex/Java"); 
CFStringTransform((__bridge CFMutableStringRef)theLetter, NULL, transform, YES); 
// theLetter is now @"J" 

...但是,我似乎不知道如何在去其他方向,即從NSString @"J"開始,輸出NSString @"004A"

回答

0

只需提取每個字符,並使用格式字符串@"%04x"格式化,如下圖所示:

NSString *input = @"How now brown cow"; 
for (NSUInteger i = 0; i < [input length]; i++) { 
    unichar c = [input characterAtIndex:i]; 
    NSLog(@"%04x", (unsigned)c); 
    // or NSString *s = [NSString stringWithFormat:@"%04x", (unsigned)c]; 
} 

BTW我不明白你已經發布的代碼,但因爲這是沒有問題的,它不沒關係。

+0

謝謝!坦率地說,我不明白我發佈的代碼,它幾周前在StackOverflow上給了我:)如果你知道一種不那麼呆板的方式來完成同樣的事情,但是,也很想聽到這個... (只要它讓我接受你的答案) – DanM

+0

@Cyber​​Mew爲什麼呢?它們不適合16位的UTF-16嗎? – trojanfoe

+0

爲什麼要投(無符號)? 'unichar'已經是一個未簽名的短。 –

相關問題