Home News Forum Social Networking Support Us Advertise

Spanish Lesson 1 ($1.99)

aWake!Gently ($1.99)

The Bird & The Snail - Knock Knock - Deluxe ($4.99)

Match-It Trains ($0.99)

Tangled ($0.99)

iFlatter ($0.99)

The 15 puzzle ($0.99)

Tap Forms Database ($8.99)

Higher or Lower Card Game (Hi Lo) ($0.99)

Red Pixel ($0.99)

Time-Shift Radio ($0.99)

Want your application advertised here? Only $10/week!

Go Back   iPhone Dev SDK Forum > iPhone SDK Development Forums > iPhone SDK Development

Reply
 
LinkBack Thread Tools Display Modes
Old 10-27-2008, 04:37 AM   #1 (permalink)
Junior Member
 
Join Date: Oct 2008
Posts: 11
Rep Power: 0
ohiyo1234 is an unknown quantity at this point
Default Have problem with base64 Endcoder/decoder

i stuck in the code that encoder and decoder

how to use it

this is the code

base64.h
Code:
@interface NSData (Base64) 
	
+ (NSData *)dataWithBase64EncodedString:(NSString *)string;
- (id)initWithBase64EncodedString:(NSString *)string;

- (NSString *)base64Encodeing;
- (NSString *)base64EncodeingWithLineLength:(unsigned int) lineLength;

@end
base64.m

Code:
static char encodingTable[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','+','/' };

@implementation NSData (VQBase64)

- (id)initWithString:(NSString *)string {
	if (self = [super init]) {
		[self initWithBase64EncodedString:string];
	}
	return self;
	
}


+ (NSData *) dataWithBase64EncodedString:(NSString *) string {
	        return [[[NSData allocWithZone:nil] initWithBase64EncodedString:string] autorelease];
}

- (id) initWithBase64EncodedString:(NSString *) string {
 	        NSMutableData *mutableData = nil;
 	
 	        if( string ) {
 	                unsigned long ixtext = 0;
 	                unsigned long lentext = 0;
 	                unsigned char ch = 0;
 	                unsigned char inbuf[4], outbuf[3];
 	                short i = 0, ixinbuf = 0;
 	                BOOL flignore = NO;
 	                BOOL flendtext = NO;
 	                NSData *base64Data = nil;
 	                const unsigned char *base64Bytes = nil;
 	
 	                // Convert the string to ASCII data.
 	                base64Data = [string dataUsingEncoding:NSASCIIStringEncoding];
 	                base64Bytes = [base64Data bytes];
 	                mutableData = [NSMutableData dataWithCapacity:[base64Data length]];
 	                lentext = [base64Data length];
 	
 	                while( YES ) {
 	                        if( ixtext >= lentext ) break;
 	                        ch = base64Bytes[ixtext++];
 	                        flignore = NO;
 	
 	                        if( ( ch >= 'A' ) && ( ch <= 'Z' ) ) ch = ch - 'A';
 	                        else if( ( ch >= 'a' ) && ( ch <= 'z' ) ) ch = ch - 'a' + 26;
 	                        else if( ( ch >= '0' ) && ( ch <= '9' ) ) ch = ch - '0' + 52;
	                        else if( ch == '+' ) ch = 62;
 	                        else if( ch == '=' ) flendtext = YES;
 	                        else if( ch == '/' ) ch = 63;
 	                        else flignore = YES;
 	
 	                        if( ! flignore ) {
 	                                short ctcharsinbuf = 3;
 	                                BOOL flbreak = NO;
 	
 	                                if( flendtext ) {
 	                                        if( ! ixinbuf ) break;
 	                                        if( ( ixinbuf == 1 ) || ( ixinbuf == 2 ) ) ctcharsinbuf = 1;
 	                                        else ctcharsinbuf = 2;
 	                                        ixinbuf = 3;
 	                                        flbreak = YES;
 	                                }
 	
 	                                inbuf [ixinbuf++] = ch;
 	
 	                                if( ixinbuf == 4 ) {
 	                                        ixinbuf = 0;
 	                                        outbuf [0] = ( inbuf[0] << 2 ) | ( ( inbuf[1] & 0x30) >> 4 );
 	                                        outbuf [1] = ( ( inbuf[1] & 0x0F ) << 4 ) | ( ( inbuf[2] & 0x3C ) >> 2 );
 	                                        outbuf [2] = ( ( inbuf[2] & 0x03 ) << 6 ) | ( inbuf[3] & 0x3F );
 	
 	                                        for( i = 0; i < ctcharsinbuf; i++ )
 	                                                [mutableData appendBytes:&outbuf[i] length:1];
 	                                }
 	
 	                                if( flbreak )  break;
 	                        }
 	                }
 	        }
 	
 	        self = [self initWithData:mutableData];
 	        return self;
}

#pragma mark -
 	
- (NSString *) base64Encoding {
 	        return [self base64EncodingWithLineLength:0];
}

- (NSString *) base64EncodingWithLineLength:(unsigned int) lineLength {
		        const unsigned char     *bytes = [self bytes];
	 	        NSMutableString *result = [NSMutableString stringWithCapacity:[self length]];
	 	        unsigned long ixtext = 0;
		        unsigned long lentext = [self length];
	 	        long ctremaining = 0;
	 	        unsigned char inbuf[3], outbuf[4];
	 	        unsigned short i = 0;
	 	        unsigned short charsonline = 0, ctcopy = 0;
	 	        unsigned long ix = 0;
	 	
	 	        while( YES ) {
		 	                ctremaining = lentext - ixtext;
			                if( ctremaining <= 0 ) break;
		 	
		 	                for( i = 0; i < 3; i++ ) {
			 	                        ix = ixtext + i;
			 	                        if( ix < lentext ) inbuf[i] = bytes[ix];
				                        else inbuf [i] = 0;
		 	                }
		 	
			                outbuf [0] = (inbuf [0] & 0xFC) >> 2;
		 	                outbuf [1] = ((inbuf [0] & 0x03) << 4) | ((inbuf [1] & 0xF0) >> 4);
		 	                outbuf [2] = ((inbuf [1] & 0x0F) << 2) | ((inbuf [2] & 0xC0) >> 6);
			                outbuf [3] = inbuf [2] & 0x3F;
		 	                ctcopy = 4;
			
		 	                switch( ctremaining ) {
				 	                case 1:
				 	                        ctcopy = 2;
				 	                        break;
				 	                case 2:
				 	                        ctcopy = 3;
				 	                        break;
		 	                }
		 	
		 	                for( i = 0; i < ctcopy; i++ )
	                        [result appendFormat:@"%c", encodingTable[outbuf[i]]];
	
	                for( i = ctcopy; i < 4; i++ )
	                        [result appendString:@"="];
 	
	                ixtext += 3;
 	                charsonline += 4;
 	
 	                if( lineLength > 0 ) {
	                        if( charsonline >= lineLength ) {
 	                                charsonline = 0;
 	                                [result appendString:@"\n"];
 	                        }
 	                }
 	        }
 	
 	        return [NSString stringWithString:result];
}
I'm sorry to bother everyone

and thank you for your suggestion
ohiyo1234 is offline   Reply With Quote
Old 10-27-2008, 05:57 AM   #2 (permalink)
Junior Member
 
Join Date: Oct 2008
Posts: 11
Rep Power: 0
ohiyo1234 is an unknown quantity at this point
Default

i don't know how to use it. i tried to use them but nothing happen
ohiyo1234 is offline   Reply With Quote
Old 10-27-2008, 09:12 AM   #3 (permalink)
Senior Member
 
Join Date: Sep 2008
Posts: 1,431
Rep Power: 2
PhoneyDeveloper is on a distinguished road
Default

To use them #import the header file and do something like this:

Code:
NSData*     base64Data = [[NSData alloc] initWithBase64EncodedString:myBase64String];

NSString*  base64String = [myData base64Encodeing];
PhoneyDeveloper is offline   Reply With Quote
Old 03-22-2009, 02:08 PM   #4 (permalink)
Senior Member
 
Join Date: Dec 2008
Location: Oceanside, CA
Posts: 233
Rep Power: 1
aryaxt is on a distinguished road
Default

Hi did u get the Base64 decoder/encoder to work? I had no luck with that?
The code u provided has problems won't compile
aryaxt is offline   Reply With Quote
Old 04-02-2009, 01:41 PM   #5 (permalink)
Senior Member
 
Join Date: Dec 2008
Location: Oceanside, CA
Posts: 233
Rep Power: 1
aryaxt is on a distinguished road
Default

did u get it to work?

Last edited by aryaxt; 04-02-2009 at 02:00 PM.
aryaxt is offline   Reply With Quote
Old 06-17-2009, 12:21 PM   #6 (permalink)
Senior Member
 
Join Date: Dec 2008
Location: Oceanside, CA
Posts: 233
Rep Power: 1
aryaxt is on a distinguished road
Default

You are such a loser man
aryaxt is offline   Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


» Advertisements


» Stats
Members: 8,231
Threads: 20,199
Posts: 90,216
Top Poster: RickMaddy (2,121)
Welcome to our newest member, OneGlobe
Powered by vBadvanced CMPS v3.1.0

All times are GMT -5. The time now is 02:44 PM.
Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0