Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSData to display as a string

I am building an iPhone app and stuck with the following:

unsigned char hashedChars[32]; CC_SHA256([inputString 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.

like image 904
topace Avatar asked Apr 16 '10 13:04

topace


2 Answers

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]; 
like image 121
Noah Witherspoon Avatar answered Sep 19 '22 15:09

Noah Witherspoon


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.

like image 27
topace Avatar answered Sep 17 '22 15:09

topace