【发布时间】:2018-06-29 00:51:15
【问题描述】:
我正在寻找一种方法来快速旋转字节数组中的位,而不需要大量的 for 循环来获取和设置每个位从旧位置到新位置。在这种特殊情况下,我需要顺时针旋转 90 度。 例如,如果我有:
unsigned char array[8] = {
0b11110000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
0b00000000,
0b00000000,
0b00000001
};
我需要得到:
unsigned char array[8] = {
0b00001111,
0b00000001,
0b00000001,
0b00000001,
0b00000000,
0b00000000,
0b00000000,
0b10000000
};
寻找最有效的方法来做到这一点......但它可能并不总是一个 8x8 的位网格。不过,永远都是二维的力量(如果有帮助的话!)
【问题讨论】:
-
如果没有 for 循环,您将无法转换 char 数组。
-
在 C 或大多数底层硬件中没有内置支持以任何简单的方式完成。
-
我应该指出,我的意思不是“根本没有 for 循环”!只是不是逐位转换所需的嵌套 for 循环。
-
@Gab:当然可以,但这会不必要地麻烦。
-
当然你可以在 C 中做到这一点,@Abra。但我很好奇,您是否想到了一些在 C++ 中无法在与 C 相同的子集中实现的简单方法?
标签: c++ c arrays transform bit