Записать байт в файл на C

У меня есть байт, объявленный как unsigned int 0b11010101, как я могу записать это в двоичный файл как 1 байт? Я знаю, что fwrite принимает тип const void * как буфер, но я не знаю, как записать свой байт, если он представлен как беззнаковое целое число.


person unconditionalcoder    schedule 25.11.2015    source источник
comment
Отправьте указатель на него...   -  person Eugene Sh.    schedule 25.11.2015
comment
0b11010101 недействителен C. Вы случайно не используете gcc?   -  person fuz    schedule 25.11.2015
comment
да, я использую gcc, и он отлично компилируется   -  person unconditionalcoder    schedule 25.11.2015


Ответы (2)


Возможно, вам лучше не писать ни одного байта int из-за порядка следования байтов. Сначала конвертируйте в unsigned char.

unsigned int intval = 0b11010101;       // assuming compiler likes it
unsigned char charval = intval;
fwrite (&charval, 1, 1, stream);
person Weather Vane    schedule 25.11.2015
comment
Я использовал fprintf() для записи двоичных файлов. unsigned int val=0b11010101;…………fopen(…);…………fprintf(fp,%c,val); будет работать. - person Arif Burhan; 24.03.2016

Вы можете записать один байт в файл, используя fputc().

Пример:

unsigned int val = 0b11010101;
fputc(val, stream);

Протестировано с использованием:

~ $ cc -Wall -o test test.c
~ $ ./test | xxd
00000000: d5                                       .
person njh    schedule 22.02.2021