NSData显示为字符串

top*_*ace 43 iphone nsstring nsdata

我正在构建一个iPhone应用程序,并坚持以下:

unsigned char hashedChars[32];
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];
NSLog(@"hashedData = %@", hashedData);
Run Code Online (Sandbox Code Playgroud)

日志显示如下:

hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
Run Code Online (Sandbox Code Playgroud)
  • 注意hashedData是NSData,而不是NSString

但我需要的是将hashedData转换为NSString,如下所示:

NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
Run Code Online (Sandbox Code Playgroud)

所以基本上结果需要像hashedData,除了我不想在它们之间使用尖括号和空格.

Noa*_*oon 64

使用NSString initWithData:encoding:方法.

NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)

(编辑以回复您的评论:)

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

NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
Run Code Online (Sandbox Code Playgroud)


top*_*ace 22

我找到了解决方案,我认为我是愚蠢的.

基本上我所要做的就是:

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

再次感谢所有试图提供帮助的人,非常感谢.