NSData显示为字符串

时间:2010-04-16 13:38:31

标签: 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);

日志显示如下:

hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
  • 注意hashedData是NSData,而不是NSString

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

NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";

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

3 个答案:

答案 0 :(得分:64)

使用NSString initWithData:encoding:方法。

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

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

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

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

答案 1 :(得分:22)

我找到了解决方案,我觉得我很蠢。

基本上我所要做的就是:

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

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

答案 2 :(得分:2)

定义包含有问题字符的NSCharacterSet,然后使用-stringByTrimmingCharactersInSet过滤字符串:。