我有像字節的無符號字符數組:C:計算一系列位跨越在幾個字節
unsigned char[20] = {0xff, 0x1a, 0x70, 0xa9, ...}
我現在要執行移到該陣列的X個連續位的計算(具有x > 8
;例如x = 15
)。特別是,我想對每15位進行一次主投票,返回一位。隨後,返回的單個位將再次轉換爲無符號的字節。
我已經實現了majorityVoting算法。我還實施了整個問題天真的算法,它的工作原理是這樣的:
- 字節數組轉換爲位陣列(也無符號的char []持零和一),位排列
- 遍歷和將每個x位系列傳遞給多數投票函數
- 收集大多數投票結果也是位數組(unsigned char [])
- 循環遍歷此位數組,並使用按位操作構造來自每個8位系列的字節位。
對我來說,這看起來很直觀但同時又很麻煩。
您是否看到任何優化的可能性,或者您甚至可以給出一個更清晰的算法?
最好的問候, P.
你能解釋一下你爲什麼不只使用16位塊有1個未使用的填充位?事實上,我希望這是最初的目的,其結果存儲在第16位。 –