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:.