1

私は「ビットマップ」を持っています。たとえば、64幅です。1 バイトあたり 8 ビットを意味します。0000 0000そして、2 番目のビットをアクティブにしたいとしましょう0100 0000

unsigned char の配列を作って memcpy を使ってみました。

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

unsigned char 変数で 1 を宣言してみました。

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

この場合、strcpyは何も解決せず、memcpyも明らかに解決しないことを知っています。これを確実に行う適切な方法があります。ご覧のとおり、私は C の専門家ではありません。

このように配列内の値を変更しようとしてはいけませんか?

4

1 に答える 1

1

あなたのビットマップがそのように見えるとしましょう

unsigned char bitmap[8] = {0};

bitmapそして、配列の最初のバイトの 2 番目のビット (左から) をアクティブにしたい( 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
于 2013-05-03T14:50:37.987 に答える