Mam tablicę czterech niepodpisanych znaków. Chcę traktować ją jak 32-bitową liczbę (zakładam, że górne bity char nie obchodzą mnie, tylko dbam o niższe 8 bitów). Następnie chcę cyklicznie przesunąć go o dowolną liczbę miejsc. Mam kilka różnych rozmiarów zmian, wszystkie określone podczas kompilacji.Jak przesunąć okrąg w tablicy 4 znaków?
E.g.
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
Edit: Aby wszyscy zastanawiać, dlaczego nie wspomnieć CHAR_BIT = 8, ponieważ jest to standardowy C. I nie określił platformę, więc dlaczego zakładając jeden?
Dlaczego nie przechowywać go w 32-bitowym układzie odniesienia, takich jak int (w zależności od urządzenia i wszystkich)? – JoshD
jeśli char jest 16-bitowy, to twój przykład jest zły, w zasadzie chcesz traktować je jako 8-bitowe znaki, prawda? –