Преобразование NSData к base64

Как преобразовать NSData кому: base64. Я имею NSData и хочу преобразовать в base64 как я могу сделать это?

38
задан Girish 3 July 2013 в 09:50
поделиться

2 ответа

РЕДАКТИРОВАТЬ

Начиная с OS X 10.9 / iOS 7, это встроено в структуру.

См. - [NSData base64EncodedDataWithOptions:]


До iOS7 / OS X 10.9:

Мэтт Галлахер написал статью по этой самой теме. Внизу он дает ссылку на свой встраиваемый код для iPhone.

На Mac можно использовать библиотеку OpenSSL, на iPhone он пишет свой имп.

50
ответ дан 27 November 2019 в 03:10
поделиться

Это непросто. Как и в 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];
4
ответ дан 27 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

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