【发布时间】:2011-04-24 12:16:16
【问题描述】:
我有一个由四个无符号字符组成的数组。我想将其视为 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。我没有指定平台,所以你为什么假设一个?
【问题讨论】:
-
为什么不将它存储在 32 位数据中,例如 int(取决于机器和所有)?
-
如果 char 是 16 位,那么您的示例是错误的,基本上您想将它们视为 8 位字符,对吗?
标签: c