Digite struct de conversão para c ++ inteiro
Eu tenho um design que requer que os valores sejam contidos em determinados bits dentro de uma palavra de 32 bits. O exemplo dos bits 10 a 15 deve conter o valor 9, com os bits restantes sendo 0. Portanto, para simplificar / legibilidade, criei uma estrutura que contém uma versão detalhada do que é solicitado.
struct {
int part1 : 10;
int part2 : 6;
int part3 : 16;
} word;
Eu posso então definirpart2
seja igual a qualquer valor solicitado e defina as outras partes como 0.
word.part1 = 0;
word.part2 = 9;
word.part3 = 0;
Agora eu quero pegar essa estrutura e convertê-la em um único inteiro de 32 bits. Eu o compilei forçando a transmissão, mas não parece uma maneira muito elegante ou segura de converter os dados.
int x = *reinterpret_cast<int*>(&word);
Se eu tentar transmiti-lo normalmentereinterpret_cast<int>(word)
Estou tendo o erro a seguir:
invalid cast from type 'ClassName::<anonymous struct>' to type 'int'
Deve haver uma maneira melhor de fazer isso, eu simplesmente não consigo entender. Desde já, obrigado!
Nota: deve ser feito no estilo c ++, devido aos padrões e outros enfeites ...revirar os olhos