2013-05-03 31 views
1

我有一個「位圖」可以說,64寬。意味着每個字節8位。 0000 0000假設我想激活第二位,0100 0000更改位數組內的值

我試着做一個無符號字符數組和使用memcpy。

memcpy(bitmap[2], 1, sizeof(1)); 

我甚至試過在unsigned char變量中聲明1。

unsigned char bit = 1; 
memcpy(bitmap[2], bit, sizeof(bit)); 

我知道的strcpy不會在這種情況下,解決任何問題和memcpy沒有解決,要麼很明顯,還有就是肯定做一個正確的方法。我不是C專家,因爲你可以看到..

也許我不應該試圖改變這樣的數組內的值?

+0

'「位圖」可以說64位寬64位*寬?那麼8個字節?這是一個單一的「長」還是8個字符的數組? – Mike 2013-05-03 14:44:44

+0

@Mike是8個字節,我現在不會將它當作一個字節使用,只是希望能夠告訴我想改變的位置並讓它爲我改變位圖。位圖將是無符號字符的數組,如果我不應該這樣做,請糾正我。 – 2013-05-03 15:07:44

回答

1

讓我們假設你的位圖看起來像

unsigned char bitmap[8] = {0}; 

,你要激活的第一個字節的第二位(左起)在bitmap陣列(bitmap[0]):

bitmap[0] = 1U<<6; 

bitmap[0]二進制表示將是0100 0000

編輯

bitmap[i]是8位大小。

bitmap[0] = 1<<6; // means 1 shifted to the left with 6 steps 


            1<<0 
0 0 0 0 0 0 0 1 

          1<<1 
0 0 0 0 0 0 1 0 

         1<<2 
0 0 0 0 0 1 0 0 

        1<<3 
0 0 0 0 1 0 0 0 

...... 

    1<<6 
0 1 0 0 0 0 0 0 
+0

你可以請你向我解釋這是如何工作的,我不想只是把它放在代碼上,我也想學習它。我假設它會從右向左插入'1'六個房屋? – 2013-05-03 15:04:45

+0

@DiogoAlexandre回答更新 – MOHAMED 2013-05-03 15:35:48

+0

謝謝:]我會試試看我的代碼。 – 2013-05-03 15:41:25