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