Не могу точно найти способ сделать следующее в C / C ++.
Ввод: шестнадцатеричные значения, например: ffffffffff ...
Я попробовал следующий код для чтения ввода:
uint16_t twoBytes;
scanf("%x",&twoBytes);
Это нормально работает и все, но как мне разделить 2 байта на значения 1 байта uint8_t
(или, возможно, даже прочитать только первый байт). Хотел бы прочитать первый байт из входных данных и сохранить его в байтовой матрице в позиции выбора.
uint8_t matrix[50][50]
Поскольку я не очень опытен в форматировании / чтении с ввода в C / C ++ (и до сих пор использовал только scanf), любые другие идеи о том, как сделать это легко (и быстро, если это произойдет), очень приветствуются.
Редактирование: нашел еще лучший метод, используя функцию fread, поскольку она позволяет указать, сколько байтов следует читать из потока (в данном случае stdin) и сохранять в переменную / массив.
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
Параметры
ptr - указатель на блок памяти с минимальным размером (размер * количество) байтов.
size - Размер в байтах каждого элемента для чтения.
count - Количество элементов, каждый из которых имеет размер в байтах.
stream - Указатель на объект FILE, который определяет входной поток.
cplusplus ref