4

我有一个具有十六进制信息的 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?谢谢!

4

1 回答 1

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);
于 2013-03-07T16:53:12.283 回答