我正在尝试编写一个从二进制文件中读取指定字节数的函数,并将它们转换为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 :(得分: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 ++标准的一部分,因此请注意它不可移植。但是你要求轻松而不是便携!