Good for you! Here's how I rewrote it.

Code:
#include <stdio.h>
#include <string.h>

void hex_convert (char * array, char * final)
{

	int i ; 
	char c ; 
    char * ptr = array ; 
	char * outptr = final ; 
	*outptr = '\0' ; 
	
	if (strlen(array) % 8 != 0) { 
		printf("Data is not a multiple of 8\n") ; 
		return ; 
	} 
	
	while(*ptr) { 
		c = '\0' ; 
		for (i=0 ; i < 8 ; i++ ) { 
			c <<= 1 ; 
			if (ptr[i] & 1) c |= 1 ; 
		}
		*outptr++ = c ; 
		ptr += 8 ; 
	}
	*outptr = 0 ; 
}
int main (void)
{
    char array[33] = "01000000010000110111000000100000";
    char final[10];
    int i ; 
	hex_convert (array, final);
    for (i = 0 ; i < strlen( final) ; i++) { 
		printf ("%02X", (unsigned char) final[i]);
	} 
    return 0;
}