2015-03-03 85 views
0

我有一個char []向量,表示位圖,我想將其轉換爲整數向量,其中char數組中的第n位對應於整數中的第n個條目陣列。位向量爲0和1的整數向量

我只能這樣想: 遍歷每個字節,每次「提取第n位」。這很簡單,但似乎不必要的緩慢。

我可以考慮一些優化,如果我使用「< <」並檢查剩餘的字節是否爲0,我可以跳過幾個條目,但這不會增加太多,因爲我期望我的向量密集。

如何使這個更有效

感謝任何想法

+0

'int charmap [1 << CHAR_BIT] [CHAR_BIT];' – 2015-03-03 04:38:29

+0

你能解釋一下嗎? – user1018513 2015-03-03 04:51:39

+0

確實存在'1 << CHAR_BIT'字節,所以'charmap [b]'表示字節'b'。 – 2015-03-03 05:51:37

回答

0

我認爲,通過檢查燒焦你是通過被< 2^i其中正在檢查我的位,你正在接近一個迭代問題的下界。

在下面的代碼我使用(1 < < j)至等於2^j和&是按位與運算符,它會檢查是否該索引的位的值是1或0。

考慮到一個字節的長度是恆定的,它會在班輪時間內運行。

int i; 
for(i=0;i<sizeof charVector;i++){ 
    int j; 
    for(j=0;j<8;j++){ 
     if (charVector[i]< (1 << j)){ 
      break; 
     } else { 
      intVector[i*8 + j] = charVector[i] & (1 << j); 
     } 
    } 
}