Base64 encoding in objective c

this is what worked for me. May be a lot more later.
reference: http://stackoverflow.com/questions/392464/any-base64-library-on-iphone-sdk
//
// encode64.m
// encode64vr1
//
// Created by Shubham Goel on 11/11/10.
// Copyright 2010 What an App.com. All rights reserved.
//

#import "encode64.h"


@implementation encode64

static char base64EncodingTable[64] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
};


+ (NSString *) base64StringFromData: (NSData *)data length: (int)length {
int lentext = [data length];
if (lentext < outbuf =" malloc(lentext*4/3+4);" raw =" [data" inp =" 0;" outp =" 0;" do_now =" lentext" outp =" 0," inp =" 0;">> 2];
outbuf[outp++] = base64EncodingTable[((raw[inp] & 0x03) <<>> 4)];
outbuf[outp++] = base64EncodingTable[((raw[inp+1] & 0x0F) <<>> 6)];
outbuf[outp++] = base64EncodingTable[raw[inp+2] & 0x3F];
}

if ( do_now < left =" lentext%3;" i="0;" raw =" tmpbuf;" inp =" 0;">> 2];
outbuf[outp++] = base64EncodingTable[((raw[inp] & 0x03) <<>> 4)];
if ( left == 2 ) outbuf[outp++] = base64EncodingTable[((raw[inp+1] & 0x0F) <<>> 6)];
else outbuf[outp++] = '=';
outbuf[outp++] = '=';
}

NSString *ret = [[[NSString alloc] initWithBytes:outbuf length:outp encoding:NSUTF8StringEncoding] autorelease];
free(outbuf);

return ret;
}
@end

Comments