-10

If I have NSData converted as string,like this

NSString *someString = [NSString stringWithFormat:@"%@", hashedData];

How can I convert someString back to hashedData?

For example in the following code

NSString *string = @"This is a string";

NSData *data1 = [string dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"data: %@",data1);
NSString *dataString = [NSString stringWithFormat:@"%@",data1];
NSData* data2 = [dataString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"data2: %@",data2);

I get the following output

data1: <54686973 20697320 61207374 72696e67>
data2: <3c353436 38363937 33203230 36393733 32302036 31323037 33373420 37323639 36653637 3e>

What I want is that data2 should be same as data1. I mean converting the dataString back to the original hashedData.

Fawad Masud
  • 12,219
  • 3
  • 25
  • 34

4 Answers4

1

Replace your code like this :

NSString *string = @"This is a string";   
NSData *data1 = [string dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"data: %@",data1);
NSString *dataString = [NSString stringWithUTF8String:[data1 bytes]];
NSData* data2 = [dataString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"data2: %@",data2);

Output:

Demoapp[1024:22267] data: <54686973 20697320 61207374 72696e67> 2015-09-04 12:52:10.104 Demoapp[1024:22267] data2: <54686973 20697320 61207374 72696e67 02>

Bhavin Bhadani
  • 22,224
  • 10
  • 78
  • 108
iAnurag
  • 9,286
  • 3
  • 31
  • 48
1

You cant assign NSData to NSString directly, you have to convert the NSData to NSString like this

NSString *dataString = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];

Check updated code

NSString *string = @"This is a string";

NSData *data1 = [string dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"data: %@",data1);
NSString *dataString = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];
NSData* data2 = [dataString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"data2: %@",data2);

Now both the NSData are same

Rajat
  • 10,977
  • 3
  • 38
  • 55
0

Convert data to string :-

 NSData *data ;
 NSLog(@"data is :%@",data);
 NSString *strr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
 NSLog(@"Responce is : %@",strr);

Now convert string to data :-

 NSData *dataa = [strr dataUsingEncoding:NSUTF8StringEncoding];
 NSLog(@"data is :%@",dataa);


 2015-09-04 12:43:54.502 TokenPic[2003:60b] data is :<7b227375 63636573 73223a22 31222c22 706f7374 73223a22 4576656e 74204372 65617465 64205375 63636573 7366756c 6c792e22 7d>
 2015-09-04 12:44:01.165 TokenPic[2003:60b] Responce is : {"success":"1","posts":"Event Created Successfully."}
 2015-09-04 12:44:02.801 TokenPic[2003:60b] data is :<7b227375 63636573 73223a22 31222c22 706f7374 73223a22 4576656e 74204372 65617465 64205375 63636573 7366756c 6c792e22 7d>
Ram Vinay Yadav
  • 105
  • 2
  • 8
0

Converting NSData to NSString in Swift 1.2:

let stringFromData = NSString(data: data, encoding: NSUTF8StringEncoding)

Converting NSString to NSData in Swift 1.2:

let dataFromString = myString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
Nishant
  • 12,529
  • 9
  • 59
  • 94