Как сказал Марлон выше:
int a, b, c;
fscanf(fp, "%x %x %x", &a, &b, &c);
Для печати в виде шестнадцатеричных строк
fprintf(fp, "%x %x %x", a, b, c);
Я думаю, что вы можете быть смущены тем, как компьютер хранит переменные типа int
.Они не хранятся в базе 10. Они хранятся в двоичном виде, как я уверен, вы знаете.Это означает, что нет ничего особенного в присвоении шестнадцатеричного значения для int
.Это не будет храниться по-другому.Использование %x
просто показывает, что вы хотите, чтобы программа понимала, что число, которое вы ей даете, является шестнадцатеричным числом (например, чтобы она знала, что строка 10 должна храниться как 10000 (2), а не как 1010 (2)То же самое с выводом. Если ваша переменная a
имеет двоичный код 10000 (2), и вы печатаете его, используя %x
, программа знает, что вывод должен быть 10
. Если вы используете %d
, она знает, чтовывод должен быть 16
.