Чтение двоичного файла и преобразование в двоичную строку - PullRequest
1 голос
/ 12 сентября 2011

Я пытаюсь написать функцию, которая читает указанное количество байтов из двоичного файла и преобразует их в строку из 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 ]

2 голосов
/ 12 сентября 2011

Звоните itoa(), передавая 2 как основание.Убедитесь, что вы не переполняете свой буфер!

Примечание. Это не является частью какого-либо стандарта C или C ++, поэтому имейте в виду, что он не переносим.Но вы просили облегчения, а не переносимости!

2 голосов
/ 12 сентября 2011

Возьмите байт за раз и сдвиньте биты один за другим.

Что-то вроде:

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;    
  }
}
...