void hextobin(unsigned char *ctext, unsigned char *btext) { /* define buffers */ unsigned char *itbuff; /* temp buffer pointer, so we don't destroy ibuff */ unsigned char *otbuff; /* temp buffer pointer, so we don't destroy obuff */ int i = 0; char *hexstring; /* temp string used for strtol */ int x = 0; /* allocate buffer memory and zero out */ itbuff = calloc(sizeof(ctext)-1, sizeof(char)); /* set all pointers to start memory */ otbuff = calloc(sizeof(btext)-1, sizeof(char)); /* set all pointers to start memory */ hexstring = calloc(4, sizeof(char)); strncpy(itbuff, ctext, 256); strncpy(hexstring, "0x", 2); /* setup for hex conversion */ printf("itbuff in conv: %s\n", itbuff); printf("itbuff len: %d\n", strlen(itbuff)); /* convert ibuff to obuff, using itbuff and otbuff */ for (i = 0 ; i < 128 ; i++) { hexstring[2] = itbuff[0]; /* grab first char */ hexstring[3] = itbuff[1]; /* grab second char */ sprintf(otbuff, "%c", strtol(hexstring, NULL, 16)); /* convert to long, then put it in obuff as char */ (itbuff) += 2; /* walk input buffer, 2 chars at a time */ (otbuff)++; /* walk output buffer, 1 char at a time */ } /* copy the results */ strcpy(btext, otbuff); printf("btext: %s\n", btext); /* make sure we do proper memory management! */ itbuff = otbuff = NULL; free(otbuff); free(itbuff); free(hexstring); }