更改位数组中的值

时间:2013-05-03 14:39:58

标签: c arrays byte bit

我有一个“位图”让我们说,64宽。含义每字节8位。 0000 0000让我说要激活第二位0100 0000

我尝试使用memcpy创建一个unsigned char数组。

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

我甚至尝试在unsigned char变量中声明1。

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

我知道在这种情况下,strcpy不会解决任何问题,并且memcpy显然没有解决它,有一种正确的方法可以做到这一点。我不是C专家,你可以看到..

也许我不应该像这样尝试更改数组中的值?

1 个答案:

答案 0 :(得分: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