У меня есть массив из четырех символов без знака. Я хочу рассматривать его как 32-битное число (предположим, что верхние разряды char меня не волнуют. Меня интересуют только младшие 8 бит). Затем я хочу кругово сдвинуть его на произвольное количество мест. У меня несколько разных размеров сдвига, все они определены во время компиляции.
например.
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
Изменить: всем, кто задается вопросом, почему я не упоминал CHAR_BIT!= 8, потому что это стандартный C. Я не указал платформу, так почему вы принимаете ее?