Russian Qt Forum
Ноябрь 25, 2024, 07:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Разложить int побитно  (Прочитано 5929 раз)
eXeLe
Гость
« : Октябрь 12, 2012, 15:22 »

собссно сабж.
получаю по UDP дейтограмму, которую записываю в структуру.
один из int'ов содержит в себе различную информацию, которую надо разбить
к примеру, 1 и 2 бит - такое то значение, 3 и 4 - другое, 5 и 6 - следующее.
как можно разбить int побитно и создав несколько новых int'ов, присвоить им значения конкретных битов?
вероятно как то через запись изначального инта через char, но тогда не знаю, как правильно записать сразу два бита в один инт
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 12, 2012, 15:28 »

http://qt-project.org/doc/qt-4.8/qbitarray.html
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
eXeLe
Гость
« Ответ #2 : Октябрь 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;
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 12, 2012, 15:40 »

Не путай QBitArray и QByteArray.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
_OLEGator_
Гость
« Ответ #4 : Октябрь 12, 2012, 15:41 »

http://bit.ly/SUT0gA
Записан
eXeLe
Гость
« Ответ #5 : Октябрь 12, 2012, 15:42 »

ну да, QBitArray
с байтаррей просто до этого сталкивался, по привычке написал =)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Октябрь 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;
};
 

А ответы-ссылки меня удивили  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.16 секунд. Запросов: 23.