Ho una matrice di quattro caratteri senza segno. Voglio trattarlo come un numero a 32 bit (supponiamo che i bit superiori del char non siano utili. Mi interessa solo degli 8 bit più bassi). Quindi, voglio spostarlo in modo circolare da un numero arbitrario di posti. Ho alcune diverse dimensioni di turno, tutte determinate in fase di compilazione.Come circolare spostare un array di 4 caratteri?
E.g.
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
Edit:! A tutti chiedendo perché non ho menzionato CHAR_BIT = 8, perché questo è C. di serie che non ha specificato una piattaforma, allora perché stai assumendo uno?
Perché non riporlo in un 32 bit dato come un int (a seconda della macchina e tutto)? – JoshD
se il char è 16 bit, il tuo esempio è sbagliato, in pratica VUOI trattarli come caratteri a 8 bit, giusto? –