2012-06-13 2 views
0

У меня есть эта строкаПреобразовать гекса в NSString

NSString * str = @ "01 00 00 41 8B 00 01 00 00 40 BC 00 01 00 00 43 0D 00"; 

и я пытаюсь преобразовать его в NSacii с этим finction

- (NSString *)hexToString:(NSString *)string { 
    NSMutableString * newString = [[NSMutableString alloc] init]; 
    NSScanner *scanner = [[NSScanner alloc] initWithString:string]; 
    unsigned value; 
    while([scanner scanHexInt:&value]) { 
     [newString appendFormat:@"%c",(char)(value & 0xFF)]; 
    } 
    string = [newString copy]; 
    [newString release]; 
    return [string autorelease]; 
} 

она работает идеально, но проблема, когда я хочу, чтобы преобразовать строку в прокляну я не могу найти 00 это означает результат в 01 41 8B 01 40 BC 01 43 0D

+0

я знаю, что 00 является Null в массив ASCII, haw i может вернуть то же значение – mobileHard

+0

Дубликат: http://stackoverflow.com/questions/6515360/convert-string-of-hex-to-nsstring-of-text – Alladinian

+0

Эта серия шестнадцатеричных значений явно а не строку ASCII. Почему вы пытаетесь преобразовать его в ASCII? –

ответ

0
- (NSString *)hexToString:(NSString *)string { 
    NSMutableString * newString = [[NSMutableString alloc] init]; 
    NSScanner *scanner = [[NSScanner alloc] initWithString:string]; 
    unsigned value; 
    while([scanner scanHexInt:&value]) { 
     if (value==0) 
     { 

      [newString appendString:@"\0"]; 

     } 
     else 
     { 
      [newString appendFormat:@"%c",(char)(value & 0xFF)]; 
     } 
    } 
    string = [newString copy]; 
    [newString release]; 
    return [string autorelease]; 
}