Это не легко.Как и в нет встроенной поддержки этого в 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];