【问题标题】:Write a byte to a file in C将一个字节写入C中的文件
【发布时间】:2023-08-19 03:59:01
【问题描述】:

我有一个字节声明为unsigned int 0b11010101我怎样才能将它作为 1 个字节写入二进制文件?我知道 fwrite 将类型 const void * 作为缓冲区,但如果它表示为无符号整数,我不知道如何写入我的字节。

【问题讨论】:

  • 发送指向它的指针...
  • 0b11010101 不是有效的 C。您是否有机会使用 gcc?
  • 是的,我正在使用 gcc,它编译得很好

标签: c byte fwrite fread unsigned-integer


【解决方案1】:

也许像这样,你最好不要写int 的一个字节,因为字节序。先转换成unsigned char

unsigned int intval = 0b11010101;       // assuming compiler likes it
unsigned char charval = intval;
fwrite (&charval, 1, 1, stream);

【讨论】:

  • 我使用 fprintf() 来编写二进制文件。 unsigned int val=0b11010101;…………fopen(…);…………fprintf(fp,"%c",val); 会起作用。
【解决方案2】:

您可以使用fputc() 将单个字节写入文件。

例子:

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

测试使用:

~ $ cc -Wall -o test test.c
~ $ ./test | xxd
00000000: d5                                       .

【讨论】:

    最近更新 更多