2011-10-18 43 views
3

現在、16進数値を含むNSStringがあります。このNSStringオブジェクトをNSDataオブジェクトに変換する必要があります。その内容はまったく変更されません。16進数の文字列を16進数のデータに変換する

私が戻ったNSDataに(あなただけのNSLog NSDataオブジェクト場合は、コンソールに何を得る)NSDataオブジェクトのデバッグ出力を「解析」するために、このコードを使用し
+0

明快にする:文字列に16進値がASCII表現(例:{'6'、 'e'、 '7'、 '5'、 '6'、 'c'、 '6'、 'c '})、または一連のバイト(たとえば、{0x6e、0x75、0x6c、0x6c})を含んでいますか? –

答えて

8

-(NSData*) bytesFromHexString:(NSString *)aString; 
{ 
    NSString *theString = [[aString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] componentsJoinedByString:nil]; 

    NSMutableData* data = [NSMutableData data]; 
    int idx; 
    for (idx = 0; idx+2 <= theString.length; idx+=2) { 
     NSRange range = NSMakeRange(idx, 2); 
     NSString* hexStr = [theString substringWithRange:range]; 
     NSScanner* scanner = [NSScanner scannerWithString:hexStr]; 
     unsigned int intValue; 
     if ([scanner scanHexInt:&intValue]) 
      [data appendBytes:&intValue length:1]; 
    } 
    return data; 
} 

をそれは私の最も堅牢ではありませんコードを作成しますが、[nsdata_object description]を解析する作業は行います。

+0

チャームのように働いて、ありがとう! –

+0

ありがとう、それは動作します! –

関連する問題