use*_*561 4 hex objective-c nsstring nsdata nsfilehandle
我有一个NSString,有十六进制信息,如
<00000020 66747970 4d344120 00000000 4d344120 6d703432 69736f6d 00000000 00031203
Run Code Online (Sandbox Code Playgroud)
它来自NSData.我需要做的是将Hex数据的NSString转换为Ascii,它将是:
[0][0][0] ftypM4A [0][0][0][0]M4A mp42isom[0][0][0][0][0][3][18][3]
Run Code Online (Sandbox Code Playgroud)
您可能会知道这是一个M4A文件.我使用NSFileHandle将文件的第一部分加载到NSData.然后我将它存储到NSString中:
NSData *data = [filehandle readDataOfLength:1000];
NSString *str = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%@",data]];
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何直接转换NSData或将NSString转换为ascii?谢谢!
你应该做这样的事情:
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);
Run Code Online (Sandbox Code Playgroud)