Je suis en train d'essayer de générer un info_hash à partir d'un fichier torrent que j'ai téléchargé. J'ai créé le fichier Torrent en utilisant uTorrent et en utilisant PeerTracker comme logiciel de suivi.Objective-C iOS Génération d'Info_Hash à partir du fichier Torrent
J'utilise une version mise à jour du code trouvé ici:
https://code.google.com/p/rouge-server/source/browse/trunk/driver/objective-c/RougeDriver/BEncoding.m?r=88
{
announce = "http://sub.url.com:8080/announce.php";
"created by" = "uTorrent/1870";
"creation date" = 1425134140;
encoding = "UTF-8";
info = {
length = 4;
name = "test.txt";
"piece length" = 16384;
pieces = "\U00a9J\U00e8\U00c2\U00c3\U00b1\U00f5\U00b6L\bs\U201d\U00eb\U00c8\U00e1\U00f2/\U00aa\U201d";
};
}
est inférieure à la méthode de codage exacte J'utilise:
+ (void)encode:(id)object toString:(NSMutableString *)string
{
if([object isKindOfClass:[NSDictionary class]])
{
NSDictionary *dictionary = (NSDictionary *)object;
[string appendString:@"d"];
for(id key in [dictionary allKeys])
{
[self encode:key toString:string];
[self encode:[dictionary objectForKey:key] toString:string];
}
[string appendString:@"e"];
}
else if([object isKindOfClass:[NSString class]])
{
NSString *stringObject = (NSString *)object;
NSString *format = @"%lu:%@";
[string appendFormat:format, [string length], stringObject];
}
else if([object isKindOfClass:[NSArray class]])
{
NSArray *array = (NSArray *)object;
[string appendString:@"l"];
for(id item in array)
{
[self encode:item toString:string];
}
[string appendString:@"e"];
}
else if([object isKindOfClass:[NSNumber class]])
{
NSNumber *number = (NSNumber *)object;
NSString *format = @"i%de";
[string appendFormat:format, [number intValue]];
}
}
C'est la première fois travailler avec Torrents et bencoding. Je sais que je suis seulement supposé Encoder le dictionnaire "info" contenu dans le dictionnaire principal.
Est-ce que quelqu'un sait où je pourrais me tromper ici?
'pieces' ne semble pas être UTF-8 mais un mixage incluant UTF-16:" \ U00a9 "semble être le codage de caractères UTF-16 pour" © ". – zaph
De quoi aurais-je besoin pour supprimer cela? Est-ce dans le décodage? ou encodage? –
Je n'ai pas dit que vous aviez besoin de supprimer quoi que ce soit. Dans la question: "encoding =" UTF-8 "mais beaucoup de caractères semblent être UTF-16 Il semble y avoir une discordance – zaph