Как преобразовать NSData
кому: base64
. Я имею NSData
и хочу преобразовать в base64
как я могу сделать это?
РЕДАКТИРОВАТЬ
Начиная с OS X 10.9 / iOS 7, это встроено в структуру.
См. - [NSData base64EncodedDataWithOptions:]
До iOS7 / OS X 10.9:
Мэтт Галлахер написал статью по этой самой теме. Внизу он дает ссылку на свой встраиваемый код для iPhone.
На Mac можно использовать библиотеку OpenSSL, на iPhone он пишет свой имп.
Это непросто. Как и в c или obj-c, для этого нет встроенной поддержки. Вот что я делаю (по сути, CL делает это за меня):
- (NSString *)_base64Encoding:(NSString *) str
{
NSTask *task = [[[NSTask alloc] init] autorelease];
NSPipe *inPipe = [NSPipe pipe], *outPipe = [NSPipe pipe];
NSFileHandle *inHandle = [inPipe fileHandleForWriting], *outHandle = [outPipe fileHandleForReading];
NSData *outData = nil;
[task setLaunchPath:@"/usr/bin/openssl"];
[task setArguments:[NSArray arrayWithObjects:@"base64", @"-e", nil]];
[task setStandardInput:inPipe];
[task setStandardOutput:outPipe];
[task setStandardError:outPipe];
[task launch];
[inHandle writeData:[str dataUsingEncoding: NSASCIIStringEncoding]];
[inHandle closeFile];
[task waitUntilExit];
outData = [outHandle readDataToEndOfFile];
if (outData)
{
NSString *base64 = [[[NSString alloc] initWithData:outData encoding:NSUTF8StringEncoding] autorelease];
if (base64)
return base64;
}
return nil;
}
И вы используете его так:
NSString *b64str = [strToConvert _base64Encoding:strToConvert];
И это не мой код - я нашел его здесь: http: // www.cocoadev.com/index.pl?BaseSixtyFour, и он отлично работает. Вы всегда можете превратить это в метод + ().
О, и чтобы передать ваши NSData в NSString для этого метода:
NSString *str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];