2012-06-13 55 views
0

我有這個字符串轉換六到的NSString

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

,我嘗試用這種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]; 
} 

它的工作完美轉換爲NSacii,但是當我想將字符串轉換的問題十六進制我不能找到 00意思的結果是01 41 8B 01 40 BC 01 43 0D

+0

我知道,00是在空ASCII數組,我可以返回相同的值 – mobileHard

+0

Duplicate of: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]; 
}