4

次のような16進情報を持つNSStringがあります

<00000020 66747970 4d344120 00000000 4d344120 6d703432 69736f6d 00000000 00031203

これは NSData から来ました。私がする必要があるのは、Hex データの 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 に答える