Arquivo da tag: deslocando

Você já deslocou bits hoje ?

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.