• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Битовые Поля (помогите)

Gyplex

New member
17.03.2013
1
0
#1
Нужна логическая помощь:

есть структура Typedef struct{
unsigned char v1_hi:4;
unsigned char v2_hi:4;
unsigned char v1;
unsigned char v2;
}qqq;

qqq www;

www.v1 и www.v1_hi должно формировать одно чило(переменную ) из 12 бит
как это можно сделать?
 
R

rrrFer

#2
засунь структуру в енам и в этот же юнион еще одну струкруту с нужными битовыми полями
 
R

rrrFer

#3
Код:
#include <iostream>

struct SomeStruct { //! твоя структура
unsigned char 
v1_hi : 4, v2_hi : 4, v1, v2;
};

template<unsigned int N, unsigned int M>
struct SStruct { //! структура с битовыми полями 
//! для извлечения нужной тебе информации
int a : N;
int data : M;
};

template<unsigned int N, unsigned int M>
union SUnion { //! объединим твою структуру с дополнительной
SomeStruct value;
SStruct<N, M> data;
};

int main() {
SomeStruct s1; //! где то в коде будет объявлен объект твоей структуры
SUnion<8, 12> data; //! чтобы извлечь нужные данные придеца объявить объект типа
//! объединения, хотя можно 
//! это завернуть как-нибудь более эротично

s1.v1 = 'a', s1.v2 = 'o'; //! какие-то произвольные данные

data.value = s1; //! копируем данные в объединение

std::cout << data.data.data; //! получаем нужные нам поля :)

}
 
Вверх Снизу