0
我有一個char []向量,表示位圖,我想將其轉換爲整數向量,其中char數組中的第n位對應於整數中的第n個條目陣列。位向量爲0和1的整數向量
我只能這樣想: 遍歷每個字節,每次「提取第n位」。這很簡單,但似乎不必要的緩慢。
我可以考慮一些優化,如果我使用「< <」並檢查剩餘的字節是否爲0,我可以跳過幾個條目,但這不會增加太多,因爲我期望我的向量密集。
如何使這個更有效
感謝任何想法
我有一個char []向量,表示位圖,我想將其轉換爲整數向量,其中char數組中的第n位對應於整數中的第n個條目陣列。位向量爲0和1的整數向量
我只能這樣想: 遍歷每個字節,每次「提取第n位」。這很簡單,但似乎不必要的緩慢。
我可以考慮一些優化,如果我使用「< <」並檢查剩餘的字節是否爲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);
}
}
}
'int charmap [1 << CHAR_BIT] [CHAR_BIT];' – 2015-03-03 04:38:29
你能解釋一下嗎? – user1018513 2015-03-03 04:51:39
確實存在'1 << CHAR_BIT'字節,所以'charmap [b]'表示字節'b'。 – 2015-03-03 05:51:37