2011-09-11 168 views
1

我正在尝试编写一个函数,该函数从二进制文件中读取指定数量的字节并将它们转换为1和0的字符串。什么是最简单的方法来做到这一点。 文件位于BigEndian。读取二进制文件并将其转换为二进制字符串

string ReadBytesFromFile(int size) 
{ 
    string result; 
    ifstream file ("example.bin", ios::in|ios::binary|ios::ate); 
    if (file.is_open()) 
    {   
     memblock = new char [size]; 
     file.seekg (0, ios::beg); 
     file.read (memblock, size); 
     file.close(); 

     //need to convert memblock to binary string 
     result = GetBinaryString(memblock); 

     delete[] memblock; 

    } 
    return result; 
} 
+0

最简单的方法可能是使用bitset或itoa。 – 2011-09-11 21:58:44

+0

请记住取消设置skipws标志。 –

回答

2

每次取一个字节,逐个移位。

喜欢的东西:

std::ostringstream ss; 
for (int i=0; i<size; ++i) { 
    char byte = memblock[i]; 
    for (int j=0; j<8; ++j) { 
    ss << byte & 1; 
    byte = byte << 1;  
    } 
} 
2

呼叫itoa()经过2作为基数。确保你不会超出你的缓冲区!

注意:这不是任何C或C++标准的一部分,因此要警告它不可移植。但是你要求轻松而不是轻便!

+0

好的,什么是正确的方法? – Naush

+0

不是标准库的一部分,但我确信它有开放源代码的实现,如果您希望它是可移植的,可以使用它。 – 2011-09-11 22:01:46

相关问题