iphone – 将十六进制字符串转换为十六进制数据

我目前有一个包含十六进制值的NSString.我需要将此NSString对象转换为NSData对象,而根本不更改其内容.
最佳答案
我使用此代码“解析”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]的工作.

转载注明原文:iphone – 将十六进制字符串转换为十六进制数据 - 代码日志