Я создаю приложение для iPhone и застрявший в следующем:
unsigned char hashedChars[32];
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];
NSLog(@"hashedData = %@", hashedData);
Журнал показывает как:
hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
Но то, в чем я нуждаюсь, должно преобразовать hashedData в NSString, который похож:
NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
Таким образом, в основном результат должен быть похожим на hashedData кроме, я не хочу угловые скобки и промежуточные пробелы.
Я нашел решение и считаю, что поступил глупо.
В основном все, что мне нужно было сделать, это:
NSString * someString = [NSString stringWithFormat: @ "% @", hashedData];
// заставить NSData
стать NSString
Еще раз спасибо всем, кто пытался помочь, очень признателен.
Используйте метод NSString initWithData: encoding:.
NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];
(отредактируйте, чтобы ответить на ваш комментарий :)
В этом случае ответ Джошуа действительно поможет:
NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
Определите NSCharacterSet , который содержит недопустимые символы, затем отфильтруйте вашу строку с помощью -stringByTrimmingCharactersInSet :.