c - 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.
解决方案
在文件 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
}
推荐阅读
- c# - 关于 azure bot 中的瀑布步骤
- gsap - How to trigger TimelineMax animation when ScrollToPlugin is scrolling (ScrollMagic)?
- string - 标签在 javafx 1.0 中以 ''..." 结尾
- vue.js - Vuex 动作和对话窗口
- powershell - Powershell,CSV 导入
- bash - FFmpeg batch convert multiple files
- html - 流 base64 图像 - img vs canvas 标签
- azure - 具有 Azure AD v2.0 身份验证的 Sharepoint Online REST API
- ms-access - 编译错误子或未定义函数
- android - JUnit 测试无法创建帐户