1

我有一个“位图”,可以说是 64 宽。意思是每字节 8 位。0000 0000假设我想激活第二个位,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数组 ( ) 中第一个字节的第二个位(从左侧开始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 回答