读取二进制文件并转换为二进制字符串

时间:2011-09-11 21:55:43

标签: c++ binaryfiles

我正在尝试编写一个从二进制文件中读取指定字节数的函数,并将它们转换为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;
}

2 个答案:

答案 0 :(得分: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;    
  }
}

答案 1 :(得分:2)

调用itoa()传递2作为基数。确保你没有超出你的缓冲区!

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