我有一個四個無符號字符的數組。我想把它看作一個32位的數字(假設char的高位不關心,我只關心低8位)。然後,我想循環轉移它的任意數量的地方。我有幾個不同的換檔尺寸,都是在編譯時確定的。如何循環移位4個字符的數組?
E.g.
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
編輯:!爲了大家想知道我爲什麼沒有提到CHAR_BIT = 8,因爲這是標準C.我沒有指定一個平臺,讓你爲什麼假設一個?
爲什麼不將其存儲在32位數據如int(取決於機器和所有)? – JoshD 2010-10-12 19:23:08
如果字符是16位那麼你的例子是錯誤的,基本上你想要把它們當作8位字符,對吧? – 2010-10-12 21:05:23