Можно ли конвертировать NSString в NSData? - PullRequest
0 голосов
/ 05 ноября 2019

Я преобразовал 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);

Могу ли я пойти даже дальше, чем этои вернуть его к оригинальному значению фактических данных ??

1 Ответ

1 голос
/ 05 ноября 2019

Существует два способа преобразования Data в String и наоборот.

- Если data представляет читаемую строку, используйте initWithData:encoding: и dataUsingEncoding: NSString. Значение encoding обоих должно совпадать.

- Если data представляет необработанные данные (например, изображение), используйте NSData's base64EncodedStringWithOptions: и initWithBase64EncodedString:options:.

Но никогда не используйте initWithFormat NSString и не передавайте объект NSData. Это бессмысленно.

...