Russian Qt Forum

Qt => Вопросы новичков => Тема начата: eXeLe от Октябрь 12, 2012, 15:22



Название: Разложить int побитно
Отправлено: eXeLe от Октябрь 12, 2012, 15:22
собссно сабж.
получаю по UDP дейтограмму, которую записываю в структуру.
один из int'ов содержит в себе различную информацию, которую надо разбить
к примеру, 1 и 2 бит - такое то значение, 3 и 4 - другое, 5 и 6 - следующее.
как можно разбить int побитно и создав несколько новых int'ов, присвоить им значения конкретных битов?
вероятно как то через запись изначального инта через char, но тогда не знаю, как правильно записать сразу два бита в один инт


Название: Re: Разложить int побитно
Отправлено: Пантер от Октябрь 12, 2012, 15:28
http://qt-project.org/doc/qt-4.8/qbitarray.html


Название: Re: Разложить int побитно
Отправлено: eXeLe от Октябрь 12, 2012, 15:37
что то вроде этого?

Код:
int iA; //записываем датаграмму тужа
int iB; //сюда первые два байта записать надо

QByteArray aA;
aA.resize(32);
QByteArray aB;
aB.resize(2);

aA=iA;
aB[0]=aA[0];
aB[1]=aA[1];
iB=aB;


Название: Re: Разложить int побитно
Отправлено: Пантер от Октябрь 12, 2012, 15:40
Не путай QBitArray и QByteArray.


Название: Re: Разложить int побитно
Отправлено: _OLEGator_ от Октябрь 12, 2012, 15:41
http://bit.ly/SUT0gA


Название: Re: Разложить int побитно
Отправлено: eXeLe от Октябрь 12, 2012, 15:42
ну да, QBitArray
с байтаррей просто до этого сталкивался, по привычке написал =)


Название: Re: Разложить int побитно
Отправлено: Igors от Октябрь 12, 2012, 17:22
Можно по-народному
Код
C++ (Qt)
int i1 = (i >> 0) & 3;
int i2 = (i >> 2) & 3;
int i3 = (i >> 4) & 3;
 
Или по-интеллигентному
Код
C++ (Qt)
struct CBitInt {
unsigned char a1 : 2;
unsigned char a2 : 2;
unsigned char a3 : 2;
unsigned int : 0;
};
 

А ответы-ссылки меня удивили  :)