我正在构建一个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转换为NSString,如下所示:
NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
所以基本上结果需要像hashedData一样,除了我不想在它们之间使用尖括号和空格。
答案 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过滤字符串:。