NSData to display as a string
I am building an iPhone app and stuck with the following:
unsigned char hashedChars[32];
CC_SHA256([input开发者_开发百科String UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];
NSLog(@"hashedData = %@", hashedData);
The log is showing like:
hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
- note hashedData is NSData, not NSString
But what I need is to convert hashedData into NSString that looks like:
NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
So basically the result needs to be like hashedData except I don't want the angle brackets and spaces in between.
Use the NSString initWithData:encoding: method.
NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];
(edit to respond to your comment:)
In that case, Joshua's answer does help:
NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];
I have found the solution and I think I was being stupid.
Basically all I had to do is:
NSString *someString = [NSString stringWithFormat:@"%@", hashedData];
//forcing the NSData
to become NSString
Once again thank you to all who tried to help, Much appreciated.
Define an NSCharacterSet that contains the offending characters then filter your string using -stringByTrimmingCharactersInSet:.
精彩评论