Преобразование между строками NSData и base64
Какой самый простой и быстрый код для преобразования между NSData
а строка base64? Я прочитал множество решений в SO, и в основном они связаны с добавлением другого класса и т. Д. Я нашел здесь отличное решение, но оно слишком сложное.
5 ответов
Прокрутите вниз до раздела Заключение на странице, на которую вы ссылаетесь, и загрузите предоставленные файлы NSData+Base64. Это лучшее решение, которое я когда-либо видел, и невероятно простое в использовании. Если вы можете узнать что-нибудь о Какао, вы можете научиться использовать этот проект.
пример
NSString *originalString = [NSString stringWithFormat:@"test"];
NSData *data = [NSData dataFromBase64String:originalString];
NSLog([data base64EncodedString]);
Выше будет распечатывать исходную строку после преобразования ее в base64 и обратно в обычную некодированную строку.
Начиная с iOS 7, NSData
теперь напрямую предоставляет эту функциональность с новыми методами -base64EncodedDataWithOptions:
а также -base64EncodedStringWithOptions:
, (Опции позволяют вам указать, что строка должна быть / должна быть перенесена в строку, тем лучше справляться с электронной почтой и отображением пользователя.)
Вам не нужно никаких пользовательских реализаций. Создание base64 из NSData показано в других ответах. Есть противоположное направление. От строки Base64 до NSData:
NSString *base64Encoded = @"some base64 string";
NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
Имейте в виду, что есть больше форматов Base64.
Например, JWT используют безопасный формат URL.
В итоге я использовал тот же класс, что и SUDZC
реализация была легкой, сначала я сделал импорт
#import "NSData+Base64.h"
тогда я смог назвать свои данные.
NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
Или вы можете взглянуть на (совершенно новый) пример проекта CryptoCompatibility, я думаю, что есть класс-оболочка для работы с base64. Это образец MacOS, но он использует библиотеку libresolve.dylib, которая, я думаю, доступна и для iOS (это можно увидеть по крайней мере здесь, в iOS7).