【发布时间】:2011-05-15 04:21:13
【问题描述】:
好的,有一个问题。我已经为选项组装了一个位掩码。基本上,我的页面有一个列表框,允许多个选择将它们存储在整数列表(它们的 ID 值)中。总共有 14 个选择(所以 ID val 1-15)。我将其组装成位掩码的原因是因为我不想在数字中硬编码,以防我想将选项添加到数据库表(列表框从中填充)。此外,我不想将 14 个参数发送到我的 SQL 存储过程(因此在数字 14 中进行硬编码)。我可以发送这个整数并解构它(稍后的步骤)。
但是,由于另一个原因,现在我需要找出在我的整数中设置了哪些位。基本上我有财产。 get 从整数列表(从用户选择中获得)中组装位掩码,并返回该二进制十进制值的整数。这是我构建位掩码的汇编代码。
//optsNum is my integer list. This is the list containing the ID nums of the selections.
//so if the user selects the first, second, and fourth option, the list contains 1,2,4 (count 3)
//typeCount is an integer of the amount of options in the list box
int total = 0;
for (int c = 0; c < optsNum.Count(); ++c)
{
for (int i = 0; i <= typeCount; i++)
{
if ((i + 1) == optsNum[c})
total += (1 << i);
}
}
return total;
因此,如果设置了第一个、第二个和第四个,我的整数是 11。这有效,我测试了所有选择,它返回正确的整数/十进制值。
现在我需要帮助来制定我的 set 方法。这需要获取我拥有的十进制/整数,找出设置了哪些位并将它们放回列表中。所以如果我有 11 作为我的值,我需要放入一个整数列表 1,2,4。有人可以帮帮我吗?
【问题讨论】: