Вопрос по nsstring, objective-c, ios, nsdata – преобразовать base64 декодированные NSData в NSString

4

Я пытаюсь кодировать и декодировать данные base64. но при декодировании данных base64 он возвращает набор шестнадцатеричных значений, но я не могу отобразить или распечатать с использованием NSlog исходные читаемые строки. Приведенный ниже код не может ничего напечатать, просто пустой.

Кто-нибудь может помочь? Спасибо & GT; & GT;

NSString* msgEncoded = [[NSString alloc] initWithFormat:@"Q1NNKE1DTC9TTUEgUkNWL2FkbWluQHNldGVjcy5jb20gT1JHLyBUVkIvNDNkYzNlMzQwYWQ3Yzkp:"];  
NSData* decoded = [[NSData alloc] initWithData:[self decodeBase64WithString:msgEncoded]];
NSString* plainString = [[NSString alloc]initWithData:decoded encoding:NSUTF8StringEncoding];
NSLog(@"\n Decoded string:  %@ \n", plainString );
ПоказатьdecodeBase64WithString: метод. Justin Paulson
В этом вопросе я разместилNSString - & GT;NSString метод декодирования и кодирования:stackoverflow.com/questions/11633577/… Justin Paulson
Какую Base64 lib вы используете? 8vius
Вы смотрели на раздел этой статьи, который говорит об iPhone?cocoawithlove.com/2009/06/… James Black
@JustinPaulson спасибо за вашу рекомендацию, но при декодировании возникла ошибка при попытке распечатать декодирование (которое обращается к исходной строке). NSString * sampleString = @ "hello habesh"; NSString * encoded = @ "aGVsbG8gaGFiZXNo"; NSLog (@ & quot; \ n Encode string 'hello girmay'% @ & quot;, [self encodeString: sampleString]); NSLog (@ & quot; \ n Декодированная исходная строка% @ & quot;, [self decodeString: encoded]); hab

Ваш Ответ

3   ответа
7

[data base64Encoding];
[data base64EncodedStringWithOptions:NSDataBase64Encoding76CharacterLineLength];
/ * Эти методы впервые появились в NSData.h на OS X 10.9 и iOS 7.0. Они не рекомендуются в тех же выпусках в пользу методов в категории NSDataBase64Encoding. Однако эти методы существуют для нескольких выпусков, поэтому они могут использоваться для приложений, ориентированных на выпуски до OS X 10.9 и iOS 7.0. * / - (id) initWithBase64Encoding: (NSString *) base64String NS_DEPRECATED (10_6, 10_9, 4_0, 7_0); - (NSString *) base64Encoding NS_DEPRECATED (10_6, 10_9, 4_0, 7_0);
1

GTMStringEncoding учебный класс. Вам понадобитсяGTMDefines.h тоже.

GTMStringEncoding *coder = [GTMStringEncoding rfc4648Base64StringEncoding];
NSString *encodedBase64 = [coder encodeString:@"Mary had a little lamb"];

// will contain the original text
NSString *decodedText = [coder decodeString:encodedBase64];

КодироватьNSData* вNSString* и обратно кNSData*, использоватьencode: + decode: методы вместоencodeString: + decodeString:.

В качестве бонуса вы получаете много дополнительных полезных кодировок, таких какURL-безопасный вариант из Base64.

Ура @orip, я получил то, что хотел. Тпх hab
5

https://github.com/l4u/NSData-Base64

используйте это так:

#import "NSData+Base64.h"

NSData *someData  //load your data from a file, url or photo as needed
NSData *file = [NSData dataWithContentsOfFile:@"mytextfile.txt"];
NSData *photo = UIImageJPEGRepresentation(self.photo.image,1);

//encode it
NSString *base64string = [photo base64EncodedString];
NSString *base64file = [file base64EncodedString];

//decode it
NSData *back = [NSData dataFromBase64String:base64string];

Похожие вопросы