我有一个“位图”让我们说,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专家,你可以看到..
也许我不应该像这样尝试更改数组中的值?
答案 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