2015-08-07 2 views
0

Я получил NSString, содержащий значение шестигранной, который я хотел бы обращенного в ASCII. Как я могу это сделать?Преобразование HEX NSString к ASCII NSString

NSString * hexString = // some value 
NSString * asciiString = // ? convert hexString to ASCI somehow 

НЕПРАВИЛЬНЫЙ ПОДХОД, что я пытался:

Я попробовал следующий подход, который я нашел на similar question, но он не работает для меня:

NSData *_data = [hexString dataUsingEncoding:NSUTF8StringEncoding]; 
    NSMutableString *_string = [NSMutableString stringWithString:@""]; 
    for (int i = 0; i < _data.length; i++) { 
     unsigned char _byte; 
     [_data getBytes:&_byte range:NSMakeRange(i, 1)]; 
     if (_byte >= 32 && _byte < 127) { 
      [_string appendFormat:@"%c", _byte]; 
     } else { 
      [_string appendFormat:@"[%d]", _byte]; 
     } 
    } 
    asciiString = _string; // Still shows the same as before.. 

ответ

1

это работает для меня :

NSString * str = @"312d4555"; 
NSMutableString * newString = [[NSMutableString alloc] init]; 
int i = 0; 
while (i < [str length]){ 
    NSString * hexChar = [str substringWithRange: NSMakeRange(i, 2)]; 
    int value = 0; 

    sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value); 
    [newString appendFormat:@"%c", (char)value]; 
    i+=2; 
} 
NSLog(@"%@", newString); 

выход: привет

+0

«привет» - это «68656c6c6f» в UTF-8 – Blisterpeanuts

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