我有一个 unsigned char 字节数组,例如:
unsigned char[20] = {0xff, 0x1a, 0x70, 0xa9, ...}
我现在想对该数组的 x 个连续位执行计算(使用x > 8
; 例如x = 15
)。特别是,我想对每 15 位执行一次多数投票,这将返回一个位。随后,返回的单个位应再次转换为无符号字符字节。
我已经实现了多数投票算法。我还为整个问题实现了一个简单的算法,它是这样工作的:
- 将字节数组转换为位数组(也是 unsigned char[] 保存零和一)
- 遍历位数组并将每一系列 x 位传递给多数投票函数
- 也在位数组中收集多数投票结果(无符号字符 [])
- 循环这个位数组并使用按位运算从每个 8 位序列中构造字节。
对我来说,这似乎很直观,但同时也很麻烦。
您是否看到任何优化的可能性,或者您甚至可以提供更简洁的算法?
最好的问候,P。