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;
}