我有一个四个无符号字符的数组。我想把它看作一个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