Для чтения файла необработанных данных сначала необходимо открыть файлы в двоичном режиме, что не является значением по умолчанию для fstream
. Используйте file.open(filename, std::ios::binary|std::ios::in)
.
Таким образом, содержимое, считываемое в буфер памяти, будет точно таким же, как содержимое файла.
Так что, если у вас есть 00ff00ff
в файле, у вас будет 00ff00ff
в вашей памяти. Там не будет никакого преобразования.
Если вы хотите преобразовать его в 0
и 1
, предполагая, что с 00ff00ff
, вы подразумеваете, что каждый байт равен 0x00, 0xff, 0x00, 0xff
, вы можете выполнить следующее преобразование: (если 00ff00ff
на самом деле это восемь символов ASCII, см. ответ Эсскара)
for (size_t i=0; i<fileSize; i++)
{
if (memBlock[i]!=0) memBlock[i]=1;
// or
// memBlock[i] &= 1;
}
Это преобразует буфер в последовательные двоичные файлы 0
и 1
байтов.