首页 > 解决方案 > C如何从文件中读取一位

问题描述

我正在读取 C: 中的二进制文件,infile=fopen(input, "rb")并尝试一次读取每一位,所以如果文件内容是:

“你好”

'h' 的 ascii 值是104二进制的1101000

是否有可以调用并分配给原始类型的 fgetbit() 方法?前任:

int my_bit=fgetbit(infile); //value of my_bit would be 1 for hello example.

标签: cbinarybit-manipulationfgets

解决方案


在文件 I/O 期间,您无法获得比字节更精细的信息,但如果您真的想在位级别工作,您可以使用位掩码或位移位来隔离您想要的位,一旦您读取了字节出档案。

例如,要输出/检查字节中的每一位:

#include <limits.h> // for CHAR_BIT

...

unsigned char b = 0xA5; // replace with whatever you've read out of your file
for(i = 0; i < CHAR_BIT; i++)
{
    printf("%d", (b>>i)&1); 
}

要隔离字节中的最高有效位:

unsigned char mask = 0x80; // this value may differ depending on your system's CHAR_BIT
unsigned char value = /* read from file */;
if(value&mask)
{
   // MSB is set
}
else
{ 
   // MSB is clear
}

推荐阅读