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