是否可以将 NSString 转换为 NSData?

is it possible to Convert NSString to NSData?

我已经将 NSData 转换为 NSString,现在我想将 NSString 转换回 NSData。

这是我将 NSData 转换为字符串的地方

NSData *actualData = [[NSMutableData alloc] initWithData:msgdata];
NSLog(@"Actual data Before converted to a string: %@", actualData);

NSString *test = [[NSString alloc] initWithFormat:@"%@", actualData];

是否可以将 NSString 恢复为 NSData 格式?

已编辑:

编码我的 NSData 变量的代码:

NSMutableData *actualData = [[NSMutableData alloc] initWithData:msgdata];
NSLog(@"Actual data Before converted to a string: %@", actualData);

NSString *test = [[NSString alloc] initWithFormat:@"%@", actualData];
NSLog(@"Pre encoded data: %@", test);
NSData *plainData = [test dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"Mid encoded data variable: %@", plainData);
NSString *base64String = [plainData base64EncodedStringWithOptions:0];

解码代码:

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
NSLog(@"check the decoded data: %@", decodedData);
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
NSLog(@"Decoded String Afterwards: %@", decodedString);

我可以更进一步,让它恢复到原来的实际数据值吗??

有两种方法可以将 Data 转换为 String,反之亦然。

– 如果 data 表示可读字符串,使用 NSString 的 initWithData:encoding:dataUsingEncoding:。两者的 encoding 值必须匹配。

– 如果 data 表示原始数据(例如图像)使用 NSData 的 base64EncodedStringWithOptions:initWithBase64EncodedString:options:.

但永远不要使用 NSString 的 initWithFormat 并传递 NSData 对象。那是没有意义的。