我目前有一个包含十六进制数值的NSString
对象。我需要将这个NSString
对象转换为一个NSData
对象,而不改变其内容。
我目前有一个包含十六进制数值的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] 的工作。