Если вы действительно не хотите писать преобразование самостоятельно, вы можете прочитать шестнадцатеричное число с помощью [f] scanf, используя преобразование %x
, или вы можете прочитать строку и преобразовать с (для одной возможности) strtol
.
Если вы хотите сделать преобразование самостоятельно, вы можете преобразовать отдельные цифры примерно так:
if (ixdigit(ch))
if (isdigit(ch))
value = (16 * value) + (ch - '0');
else
value = (16 * value) + (tolower(ch) - 'a' + 10);
else
fprintf(stderr, "%c is not a valid hex digit", ch);