All pastes #482211 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-11 05:13 UTC
rendered paste body
void hextobin(unsigned char *ctext, unsigned char *btext)
{
   /* define buffers */
  unsigned char *ibuff;		/* input buffer */
  unsigned char *obuff;		/* output buffer */
  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;
  unsigned char *hexstring;			/* temp string used for strtol */
  int x = 0;

  /* allocate buffer memory and zero out */
  itbuff = ibuff = calloc(256, sizeof(char));	/* set all pointers to start memory */
  otbuff = obuff = calloc(128, sizeof(char));	/* set all pointers to start memory */
  hexstring = calloc(4, sizeof(char));
  memset(obuff, 0, sizeof(obuff));


  strcpy(ibuff, ctext);
  strncpy(hexstring, "0x", 2);	/* setup for hex conversion */

  /* 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 */
	printf("obuff %s\n", obuff);
    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, obuff);
  printf("btext %s\n", btext);


  /* make sure we do proper memory management! */
  free(obuff);
  free(ibuff);
  free(hexstring);
}