2014-01-29 4 views
2

Так, я знаю, как преобразовать юникод шестнадцатеричный код в 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

@CyberMew Почему? Разве они не вписываются в 16-бит UTF-16? – trojanfoe

+0

почему приведение к (без знака)? 'unichar' уже является неподписанным. –

Смежные вопросы