我们正在做一些关于随机数的实验.给出的数据存储在.bin文件中,根据提供程序,它存储在独立的位中,也就是说,每个位都是假设的bool随机变量.
现在我想在程序中使用这个输入,但是当bool占用1个BYTE并且int占用4个字节时,我不知道如何将它读入C++中的变量.似乎ifstream.read(s,n)也只取n作为char的数量.
有没有办法从文件中读取位数据?谢谢!
如果每个字符都是8位,那么您可以像这样发现每个位的状态:
// @param bit = 0 - 7
inline bool get_bit(char c, int bit)
{
return (c >> n) & 1;
}
Run Code Online (Sandbox Code Playgroud)
可以从文件中读取的最小信息单位是char(8位1).要从a中提取特定位char,您可以执行以下操作:
char c = 0xa5;
int n = 2;
int bit = (c >> n) & 1;
printf("bit = %d\n", bit);
Run Code Online (Sandbox Code Playgroud)
1如果我不包括这个,那么有人会指出a char并不总是必须是8位,它取决于CHAR_BIT你的编译器定义,但在今天所有合理的平台上,a char是8位.
| 归档时间: |
|
| 查看次数: |
4266 次 |
| 最近记录: |