2015-05-28 2 views
0

мне нужен код, чтобы преобразовать @ "043b" на @ "л"Преобразование шестнадцатеричной в юникод строку

Вот что я пытался

// get a hex string (@"0x043b") 
NSString *hexString = [@"0x" stringByAppendingString:@"043b"]; 

// scan an unsined int from it (1083 as expected) 
NSScanner* pScanner = [NSScanner scannerWithString:hexString]; 
unsigned int iValue; 
[pScanner scanHexInt: &iValue]; 

// get a unichar from it (';') 
NSNumber *number = [NSNumber numberWithUnsignedInt:iValue]; 
unichar character = [number unsignedCharValue]; 

// get a string (@";") 
NSString *result = [NSString stringWithFormat:@"%C", character]; 

, но я получаю @ ";" вместо @ "л"

Я также попытался

// get a char (';') 
char character = [number charValue]; 

// get a string (@";") 
NSString * result = [NSString stringWithFormat:@"%c", character]; 

Пожалуйста, помогите!

+0

http://stackoverflow.com/questions/16812034/convert-hex-code-to-unicode-in-objective-c – urnotsam

+0

После того, как вы используете этот пост для завершения своего кода: http: // stackoverflow .com/вопросы/1775859/хо w-to-convert-a-unichar-value-to-an-nsstring-in-objective-c –

ответ

0

Это работало для меня

int value = 0; 
sscanf([@"043b" cStringUsingEncoding:NSUTF8StringEncoding], "%x", &value); 

NSString *result = [NSString stringWithFormat:@"%C", value]; 

Но компилятор предупреждает меня на последней строке, так что ответ не то, что чистый

Format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'int' 

Испытано как на 32- и 64-разрядных процессоры

0

Здесь вы идете:

unsigned long hexBytes = 0x3b04; 
NSString *theString = [[NSString alloc] initWithBytes:&hexBytes length:sizeof(hexBytes) encoding:NSUnicodeStringEncoding]; 
NSLog(theString, @""); 

важный момент: вы должны обратить свои байты поэтому 0x3b04 вместо 0x043b.

+0

Вы можете взглянуть на решение, которое я нашел. Я не требую обращения байтов – Tim

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