Se usi il semplice C (e non il C++ managed) con un progetto Win32 console, allora puoi scrivere semplicemente

codice:
#define BYTES 7

void ToHex(unsigned char *p, char *s)
{
  int i;
  for(i=0; i<BYTES; i++)
    _snprintf(s+i*2, 2, "%02X", *(p+i));
  *(s+i*2)=0;
}

int _tmain(int argc, _TCHAR* argv[])
{
  unsigned char b[] = {0x00, 0x12, 0x34, 0x56, 0xAA, 0x55, 0xFF};
  char *st;

  st=(char *)malloc(2*BYTES*sizeof(char)+1);
	
  ToHex(b, st);
  printf("%s\n", st);

  free(st);

  return 0;
}
che risulta comprensibile e facilmente adattabile a interfacce con DLL e altri linguaggi ...