NSData显示为一个string

这是我的第一篇文章。 我正在构build一个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"; 

所以基本上结果需要像哈希数据除了我不想尖括号和之间的空格。

任何帮助深表感谢。

使用NSString initWithData:encoding:方法。

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

(编辑回应你的评论:)

在这种情况下,约书亚的答案确实有帮助:

 NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"]; NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove]; 

我find了解决办法,我觉得我很愚蠢。

基本上我所要做的就是:

NSString *someString = [NSString stringWithFormat:@"%@", hashedData]; / /强制NSData成为NSString

再次感谢所有想要帮助的人,非常感谢。

定义一个包含违规字符的NSCharacterSet ,然后使用-stringByTrimmingCharactersInSet:来筛选string。