Postarei um exemplo prático em C de como jogar o conteúdo de um char* em um int, deslocando os bits.
0. #include <stdio.h>
1.
2. int main( int argc, char* argv[] )
3. {
4. char* test = “test”;
5. int tmp = 0;
6.
7. tmp |= test[0] << 24 | test[1] << 16 | test[2] << 8 | test[3];
8.
9. printf(“Result: %d\n”, tmp);
10. return 0;
11. }
Na linha 7 vamos pegando cada caractere da palavra contida na variável test e atribuindo separadamente em cada byte da variável inteira tmp.
Uma outra maneira é ir deslocando aos poucos todo o conteúdo de tmp, como por exemplo:
tmp |= test[0];
tmp <<= 8;
tmp |= test[1];
tmp <<= 8;
tmp |= test[2];
tmp <<= 8;
tmp |= test[3];
Ao executarmos esses programas no terminal, ambos imprimirão na tela a seguinte mensagem:
Result: 1952805748
A variável tmp, depois de ser totalmente atribuída vai conter o valor 74657374 em hexa, o que, convertendo pra decimal vira 1952805748.
O valor em hexa se deve aos valores de cada caractere (da variável test) em hexa, na tabela ASCII.
t = 74
e = 65
s = 73
Bom, e qual a aplicação prática disso tudo ?
Por exemplo, agora é possível juntar os códigos de press e release de cada tecla do seu teclado, numa única variável.
Boa sorte.