我有一个数组(用零和一个填充) - > ArrayWithContent [5] = {1,0,0,1,1}; 现在我希望将其转换为变量,以便我可以读出它的总值。
0001 0011 = 19
for(i=0; i<5; i++)
{
OneValue = ArrayWithContent[i];
Variable = OneValue;
Variable >>= 1; // Send the zero or one to right.... continue to fill it up
}
显示变量的内容我现在希望它显示值19。
我知道我做错了,正确的方法是什么?指针和地址?
答案 0 :(得分:5)
Variable = 0;
for (i = 0; i < 5; i++)
{
Variable = (Variable << 1) | ArrayWithContent[i];
}
下面:
(Variable << 1)
将Variable
的当前值向左移一位。... | ArrayWithContent[i]
用ArrayWithContent[i]
替换移位值的最低有效位。Variable = ...
将结果分配回Variable
。答案 1 :(得分:1)
这是你的循环,修复:
for(i=0; i<5; i++)
{
OneValue = ArrayWithContent[i];
Variable <<= 1; // You want to shift to the left to keep the previous value.
Variable |= OneValue; // You need to OR the value, else you'd erase the previous value.
}
答案 2 :(得分:0)
如果您的数据采用大端格式,则 ...要么将每个值移动正确的数量,要么将所有内容一起移动
value = 0;
for (i = 0; i < nelems; i++) {
value |= (ArrayWithContent[i] << (nelems - i - 1));
}
...或者继续将当前值移位1位并将
中的下一位移位value = 0;
for (i = 0; i < nelems; i++) {
value <<= 1;
value |= a[i];
}