简体   繁体   中英

Converting NSData as string to NSString

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.

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>

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

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>

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM