BEncoding ObjC クラスを使用してファイルをデコードしようとしてい.torrent
ます。
NSData *rawdata = [NSData dataWithContentsOfFile:@"/path/to/the.torrent"];
NSData *torrent = [BEncoding objectFromEncodedData:rawdata];
私が次のものを手に入れたときNSLog
torrent
:
{
announce = <68747470 3a2f2f74 6f727265 6e742e75 62756e74 752e636f 6d3a3639 36392f61 6e6e6f75 6e6365>;
comment = <5562756e 74752043 44207265 6c656173 65732e75 62756e74 752e636f 6d>;
"creation date" = 1225365524;
info = {
length = 732766208;
name = <7562756e 74752d38 2e31302d 6465736b 746f702d 69333836 2e69736f>;
"piece length" = 524288;
....
name
を NSStringに変換するにはどうすればよいですか? 私が試してみました..
NSData *info = [torrent valueForKey:@"info"];
NSData *name = [info valueForKey:@"name"];
unsigned char aBuffer[[name length]];
[name getBytes:aBuffer length:[name length]];
NSLog(@"File name: %s", aBuffer);
..データを取得しますが、その後にユニコードのごみが追加されているようです:
File name: ubuntu-8.10-desktop-i386.iso)
私も試しました(ここから)..
NSString *secondtry = [NSString stringWithCharacters:[name bytes] length:[name length] / sizeof(unichar)];
..しかし、これはランダムな文字の束を返すようです:
扵湵畴㠭ㄮⴰ敤歳潴⵰㍩㘸椮潳
最初の方法 (Apple のドキュメントに記載されているように) がほとんどのデータを正しく返し、いくつかの追加バイトが返されるという事実は、BEncoding ライブラリのエラーである可能性があると思います..しかし、ObjC に関する知識が不足している可能性が高くなります故障して..