Je crée une application iPhone et je suis coincé avec les éléments suivants:
unsigned char hashedChars[32];
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];
NSLog(@"hashedData = %@", hashedData);
Le journal s'affiche comme:
hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
Mais ce dont j'ai besoin, c'est de convertir hashedData en NSString qui ressemble à:
NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
Donc, fondamentalement, le résultat doit être comme hashedData, sauf que je ne veux pas les crochets et les espaces entre les deux.
J'ai trouvé la solution et je pense que j'étais stupide.
Fondamentalement, je n'avais qu'à faire:
NSString *someString = [NSString stringWithFormat:@"%@", hashedData];
// forçant le NSData
à devenir NSString
Encore une fois merci à tous ceux qui ont essayé d'aider, très apprécié.
Utilisez la méthode NSString initWithData: encoding :.
NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];
(modifier pour répondre à votre commentaire :)
Dans ce cas, la réponse de Joshua aide:
NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
Définissez un NSCharacterSet qui contient les caractères incriminés, puis filtrez votre chaîne à l'aide de -stringByTrimmingCharactersInSet :.