Хорошо, есть вопрос. Я собрал немного маску для вариантов. По сути, на моей странице есть список, в котором можно выбрать несколько элементов и сохранить их в списке целых чисел (их значение ID). Всего существует 14 вариантов (так ID ID 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. Это работает, я проверил все выборки и возвращает правильное целое / десятичное значение.
Сейчас мне нужна помощь в создании метода сетов. Для этого нужно взять десятичное / целое число, которое у меня есть, выяснить, какие биты установлены, и поместить их обратно в список. Так что, если у меня есть 11 в качестве значения, мне нужно положить в список целых чисел 1,2,4. Кто-нибудь может мне помочь?