Преобразование шестнадцатеричной строки в шестнадцатеричные данные - PullRequest
3 голосов
/ 19 октября 2011

В настоящее время у меня есть NSString, содержащий шестнадцатеричные значения.Мне нужно преобразовать этот NSString объект в NSData объект, вообще не меняя его содержимого.

1 Ответ

8 голосов
/ 19 октября 2011

Я использую этот код, чтобы «разобрать» выходные данные отладки объекта NSData (что вы получаете в консоли, если вы просто NSLog NSData объект) обратно в NSData:

-(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].

...