Я пишу программу на c ++ для чтения файла bin. В двоичном файле содержится следующий пример содержимого.
10 00 01 02 20 03 04 40 50 .....
Проблема здесь в том, что при использовании обычного чтения из файла bin, байт 10, 40, 50 читается правильно. Но в случае 00, 01, 02 03 .... они читаются как 0, 1, 2, 3 соответственно.
Но я хочу, чтобы отдельные байты 00 01 02 03 и т.д. также читались как 00 01 02 03 и т.д. ** Причина в том, что я пытаюсь преобразовать значения в двоичные. поэтому я хочу получить двоичный эквивалент ** "10 00 01 02" , который равен 10000000000000000000100000010 . Но поскольку содержимое интерпретируется как 10012 , я получаю 10000000000010010 в качестве результата. Пожалуйста, помогите мне в решении этого. Извините, если содержание слишком длинное. Заранее спасибо.
Я использовал следующий код. // вырезать коротко для простоты
fstream fp;
fp.open(binFile, ios::binary | ios::in);
char * buffer = new char[4];
// read data as a block:
fp.read(buffer, 4);
// copied the contents of buffer[] to a string str
stringstream ss;
for (std::string::iterator it = str.begin(); it != str.end(); ++it)
{
ss << std::hex << unsigned(*it);
}
ss >> intvalue; // stores the converted hex value
string binstring = bitset<32>(intvalue).to_string();
cout<<binstring // produces wrong value.