J'essaie d'utiliser le Classe ObjC BEncoding pour décoder un .torrent
fichier.
NSData *rawdata = [NSData dataWithContentsOfFile:@"/path/to/the.torrent"];
NSData *torrent = [BEncoding objectFromEncodedData:rawdata];
Quand je NSLog
torrent
J'obtiens ce qui suit :
{
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;
....
Comment convertir le name
dans une NSString ? J'ai essayé
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);
qui récupère les données, mais qui semble avoir des déchets unicode supplémentaires après lui :
File name: ubuntu-8.10-desktop-i386.iso)
J'ai également essayé ( d'ici )..
NSString *secondtry = [NSString stringWithCharacters:[name bytes] length:[name length] / sizeof(unichar)];
mais cela semble renvoyer un tas de caractères aléatoires :
Le fait que la première méthode (mentionnée dans la documentation d'Apple) renvoie la plupart des données correctement, avec quelques octets supplémentaires, me fait penser qu'il pourrait s'agir d'une erreur dans la bibliothèque BEncoding mais mon manque de connaissance d'ObjC est plus probablement en cause
0 votes
"" n'est pas du chinois. Du moins pas ceux qu'un locuteur natif chinois pourrait reconnaître.
0 votes
@TylerLong point juste, édité !