Answer the question
In order to leave comments, you need to log in
There are 4 bytes in them information is written how to read them immediately?
so i read 2 bytes and output in decimal system . It is necessary too most only for 4 bytes. And explain the principle. Or tell me where you can read about it!
charch;
inp.get(ch);
unsigned short w = ch & 0xFF;
inp.get(ch);
w |= (ch & 0xFF) << 8;
cout << dec << (int)w << endl;
Answer the question
In order to leave comments, you need to log in
#include <cstdint> // хэдр для uint32_t
std::uint32_t value; // переменная, гарантировано 4 байта
// предполагаю, что inp наследник std::istream
inp.read(reinterpret_cast<char*>(&value), sizeof(value)); //кастим наши 4 байта в char*-буфер, sizeof(value) == 4
std::cout << value; // ну и выводим, что получилось
val = 0;
for (int i = 0; i < 4; i++)
{
unsigned char ch;
// считываем один char из потока
inp.get(ch);
// (ch & 0xFF) - паранойя, так как ch не может быть больше чем 0xFF,
// можно смело опустить и оставить только ch
// каждый unsigned char может иметь значения от 0 до 0xFF
// сдвигаем каждый прочитанный символ но (8*i) позиций, то есть при первом чтении не сдвигаем, так как
// i = 0, потом на 8, потом на 16, потом на 24
// 8 - это длина битового представления чара,
// 0xFF - это как раз 8 единичек
// затем всё склеивается операцией or.
// В итоге получится нечто вроде 0xDDCCBBAA
// если 0xAA был первый чар, 0xBB - второй и т.д.
// сдвигая на 8, мы гарантируем, что биты одного чара, не испортят биты другого чара
val |= ((ch & 0xFF) << (8*i));
}
cout << dec << val << endl;
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question