est-il possible de masquer un tableau de caractères

Disons que j’ai le tableau de caractères suivant

char array[32]; 

Je souhaite utiliser uniquement les 10 bits les plus significatifs de ce tableau en tant que valeur de hachage.

Est-il possible d’utiliser l’opération bit à bit sur ce tableau de caractères?

Si oui, comment devrais-je le faire?

En supposant que votre implémentation ait un caractère de 8 bits et que vous avez un nombre de 256 bits stocké dans big endian dans ce tableau, voici comment accéder aux 10 msb du nombre de 256 bits.

 uint16_t a; a = (array[0] << 2 | (array[1] & 0xC0) >> 6) & 0x3FF; 

Je suis sûr que vous voulez quelque chose comme ceci (en supposant que les caractères 8 bits char stockés dans un grand endian dans un array ):

 uint16_t a = (((uint16_t)array[0] & 0xFF) << 2 | ((uint16_t)array[1] & 0xFF) >> 6) & 0x3FF; 

Pour décomposer cela un peu:

 uint16_t byte0 = (uint16_t)array[0] & 0xFF; uint16_t byte1 = (uint16_t)array[1] & 0xFF; uint16_t a = (byte0 << 2 | byte1 >> 6) & 0x3FF;