You need to look at 4 binary digits to make 1 hex digit. Try:
Code:
itsme@itsme:~/C$ cat bintohex.c
#include <stdio.h>
#include <string.h>
int main(void)
{
unsigned char binstr[] = "1001110001100111";
unsigned char hexstr[5];
unsigned int hexnum;
unsigned char four[4];
int i, j;
for(i = 0;i < 4;++i)
{
hexnum = 0;
strncpy(four, binstr + (i * 4), 4);
for(j = 0;j < 4;++j)
hexnum += (four[j] - '0') << (3 - j);
sprintf(hexstr + i, "%X", hexnum);
}
puts(hexstr);
return 0;
}
Code:
itsme@itsme:~/C$ ./bintohex
9C67
itsme@itsme:~/C$