У меня есть код ниже.
FILE *fp;
int a;
fp=fopen("dump.bin","wb");
a = 0xffafbcdf;
fprintf(fp,"%x",a&0x3ffff);
Я пытаюсь сбросить только 18 младших бит переменной a. Но значение, выгружаемое в файл - 3bcdf.
Мой вопрос - не возможно ли вывести / fwrite / fprintf желаемое количество битов, которое не кратно 4 (клев) в файл?
EDIT:
1.) Когда я проверил вывод моего дампа, я понял, что поскольку я открываю файл в двоичном режиме, я не должен использовать fprintf
, но я должен использовать fwrite
.
2.) То, что я вижу в выходных данных, это DF BC 03
, он записывает кратно 8 битам, поэтому он записывает 24 бита (3 байта), но меня интересовали только 18 бит. Но потом я понял, что ни одна библиотека записи файлов не сможет записать в файл не кратные 8 битам. он всегда добавляет начальные нулевые биты для завершения байта, а затем выводит его. «Наименьшая единица подсчета» для файла данных представляет собой байт.