Как насчет
char *binary_str = "10010011";
unsigned char hex_num = 0;
for (int i = 0, char *p = binary_str; *p != '\0'; ++p, ++i)
{
if (*p == '1' )
{
hex_num |= (1 << i);
}
}
, и теперь у вас есть hex_num, и вы можете делать с ним все, что хотите.Обратите внимание, что вы можете проверить длину входной строки или ограничить цикл числом битов в hex_num.