Преобразование между строками NSData и base64 - PullRequest
39 голосов
/ 14 мая 2011

Какой самый простой и быстрый код для преобразования NSData в строку base64? Я читал множество решений в SO, и в основном они связаны с добавлением еще одного класса и т. Д. Я нашел отличное решение здесь , но оно слишком сложное.

Ответы [ 6 ]

57 голосов
/ 14 мая 2011

Прокрутите вниз до раздела Заключение на странице, на которую вы ссылались и , скачайте предоставленные файлы NSData + Base64 .Это лучшее решение, которое я когда-либо видел, и невероятно простое в использовании.Если вы можете узнать что-нибудь о Какао, вы можете научиться использовать этот проект.


Пример

NSString *originalString = [NSString stringWithFormat:@"test"]; 
NSData *data = [NSData dataFromBase64String:originalString];  
NSLog([data base64EncodedString]); 

Приведенное выше распечатает исходную строку послепреобразование его в base64 и обратно в обычную некодированную строку.

41 голосов
/ 26 сентября 2013

Начиная с iOS 7, NSData теперь напрямую предоставляет эту функциональность с новыми методами -base64EncodedDataWithOptions: и -base64EncodedStringWithOptions:.(Опции позволяют вам указать, что строка должна быть / должна быть заключена в строку, чтобы лучше справляться с электронной почтой и отображением, отображаемым пользователем.)

34 голосов
/ 15 октября 2014

Вам не нужно никаких пользовательских реализаций. Создание base64 из NSData показано в других ответах. Есть противоположное направление. От строки Base64 до NSData:

 NSString *base64Encoded = @"some base64 string";
 NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0];
1 голос
/ 18 мая 2012

В итоге я использовал тот же класс, что и SUDZC

. Реализация была простой, сначала я сделал импорт

 #import "NSData+Base64.h"

, затем я смог вызвать свои данные.

 NSData *data = [[NSData alloc] initWithData:[NSData dataWithBase64EncodedString:strData]];
0 голосов
/ 13 февраля 2019

Имейте в виду, что существует больше форматов Base64.

Например, JWT используют безопасный формат URL .

0 голосов
/ 26 сентября 2013

Или вы можете взглянуть на (совершенно новый) CryptoCompatibility пример проекта, я думаю, что есть класс-оболочка для работы base64. Это образец MacOS, но он использует библиотеку libresolve.dylib, которая, как мне кажется, доступна и для iOS (это можно увидеть по крайней мере здесь, в iOS7).

...