NSData для отображения в виде строки
Я создаю приложение для 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>
- note hashedData - это NSData, а не NSString
Но мне нужно преобразовать hashedData в NSString, который выглядит так:
NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
Таким образом, в основном результат должен быть похож на hashedData, за исключением того, что мне не нужны угловые скобки и промежутки между ними.
Ответы
Ответ 1
Я нашел решение, и я думаю, что я был глупым.
В основном все, что мне нужно было сделать:
NSString *someString = [NSString stringWithFormat:@"%@", hashedData];
//заставить NSData
стать NSString
Еще раз спасибо всем, кто пытался помочь, очень ценили.
Ответ 2
Используйте метод NSString initWithData: encoding:.
NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];
(отредактируйте ответ на свой комментарий:)
В этом случае ответ Джошуа помогает:
NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
Ответ 3
Определите NSCharacterSet, который содержит оскорбительные символы, затем отфильтруйте свою строку с помощью -stringByTrimmingCharactersInSet:.