我有一个NSString,它有十六进制信息,如
<00000020 66747970 4d344120 00000000 4d344120 6d703432 69736f6d 00000000 00031203
来自NSData。我需要做的是将十六进制数据的NSString转换为Ascii,它将是:
[0][0][0] ftypM4A [0][0][0][0]M4A mp42isom[0][0][0][0][0][3][18][3]
您可能会知道这是一个M4A文件。我使用NSFileHandle将文件的第一部分加载到NSData。然后我将它存储到NSString中:
NSData *data = [filehandle readDataOfLength:1000];
NSString *str = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%@",data]];
任何人都知道如何直接转换NSData或将NSString转换为ascii?谢谢!
答案 0 :(得分:8)
NSData *_data = // ... whatever
NSMutableString *_string = [NSMutableString stringWithString:@""];
for (int i = 0; i < _data.length; i++) {
unsigned char _byte;
[_data getBytes:&_byte range:NSMakeRange(i, 1)];
if (_byte >= 32 && _byte < 127) {
[_string appendFormat:@"%c", _byte];
} else {
[_string appendFormat:@"[%d]", _byte];
}
}
NSLog(@"%@", _string);