J'ai un tableau de quatre caractères non signés. Je veux le traiter comme un nombre de 32 bits (supposons que les bits supérieurs du caractère ne sont pas importants, je me soucie seulement des 8 bits inférieurs). Ensuite, je veux le déplacer circulairement par un nombre arbitraire de places. J'ai quelques tailles de décalage différentes, toutes déterminées au moment de la compilation.Comment faire un décalage circulaire d'un tableau de 4 caractères?
E.g.
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
Modifier: Pour tout le monde se demandant pourquoi je ne l'ai pas mentionné CHAR_BIT = 8, parce que ce standard C. Je ne précise pas une plate-forme, alors pourquoi en supposant que vous?
Pourquoi ne pas stocker dans une donnée 32 bits comme un int (en fonction de la machine et tout)? – JoshD
si char est 16 bits alors votre exemple est faux, fondamentalement vous voulez les traiter comme des caractères de 8 bits, non? –