Tengo una matriz de cuatro caracteres sin firmar. Quiero tratarlo como un número de 32 bits (supongamos que a los bits superiores del char no les importa. Solo me importan los 8 bits inferiores). Luego, quiero desplazarlo circularmente por una cantidad arbitraria de lugares. Tengo algunos tamaños de cambio diferentes, todos determinados en tiempo de compilación.¿Cómo circular una matriz de 4 caracteres?
E.g.
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
Editar: A todo el mundo se pregunta por qué no he mencionado CHAR_BIT = 8, porque esto es C. norma que no especificó una plataforma, por lo que ¿por qué suponer una?
Por lo guarde en un dato de 32 bits como un int (dependiendo de la máquina y todo)? – JoshD
si char es de 16 bits, entonces su ejemplo es incorrecto, básicamente QUIERES tratarlos como caracteres de 8 bits, ¿verdad? –