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>
  • обратите внимание, что hashedData является NSData, не NSString

Но то, в чем я нуждаюсь, должно преобразовать hashedData в NSString, который похож:

NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";

Таким образом, в основном результат должен быть похожим на hashedData кроме, я не хочу угловые скобки и промежуточные пробелы.

43
задан ROMANIA_engineer 1 December 2017 в 14:31
поделиться

3 ответа

Я нашел решение и считаю, что поступил глупо.

В основном все, что мне нужно было сделать, это:

NSString * someString = [NSString stringWithFormat: @ "% @", hashedData]; // заставить NSData стать NSString

Еще раз спасибо всем, кто пытался помочь, очень признателен.

22
ответ дан 26 November 2019 в 22:48
поделиться

Используйте метод NSString initWithData: encoding:.

NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];

(отредактируйте, чтобы ответить на ваш комментарий :)

В этом случае ответ Джошуа действительно поможет:

NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
64
ответ дан 26 November 2019 в 22:48
поделиться

Определите NSCharacterSet , который содержит недопустимые символы, затем отфильтруйте вашу строку с помощью -stringByTrimmingCharactersInSet :.

2
ответ дан 26 November 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: