2014-03-13 99 views
3

我有二进制文件作为输入,我需要按位读取它。如果我想通过文字来读取文件我会用这样的:按位读取文件C++

这段代码的
ifstream f(inFile, ios::binary | ios::in); 
    char c; 
    while (f.get(c)) { 
     cout << c; 
    } 

输出的字符序列,我需要的是1和0函数来获取的序列()返回下一个字符,我不能找到任何会返回下一位的ifstream函数。

有没有类似的方法来实现它?

感谢任何人的帮助。

+0

最好你可以做的是一次一个字节(字符)。 –

+0

只读字符并将其值转换为二进制。 – mewa

回答

10

你不能一点一点地读取文件。 所以,你应该使用这样的东西:

ifstream f(inFile, ios::binary | ios::in); 
char c; 
while (f.get(c)) 
{ 
    for (int i = 7; i >= 0; i--) // or (int i = 0; i < 8; i++) if you want reverse bit order in bytes 
     cout << ((c >> i) & 1); 
}