2013-02-10 2 views
4

С a boolean actually takes 1 byte of space, bool[] - не самый эффективный в пространстве способ представления битового массива. Иногда целые и длинные используются как более эффективный бит-массив, но длинный может содержать только 64 бита. Есть ли более экономичный способ хранения массивов в десятки миллионов бит в ограниченной памяти?Как эффективно представлять массив бит?

Все, что нужно сделать с этим массивом, чтобы установить/очистить отдельные биты и проверить некоторые биты в 1 или 0, то есть только функции мне нужно:

void Set(int index, bool value); 
bool Get(int index); 

ответ

11

Я думаю, что вам нужно BitArray класс

+0

Самая большая проблема с этим классом заключается в том, что он не реализует соответствующие общие интерфейсы коллекции. Вероятно, это не проблема для ОП, если ему нужны только эти две операции. – CodesInChaos

+3

@CodesInChaos: А какой родовой тип вы выставите? Ваша точка спорная. – leppie

+0

@leppie Реализация 'IList ' была бы подходящей ИМО. Я немного удивлен, что они не добавили это с .net 2.0, так же как они добавили его в обычные массивы. – CodesInChaos

Смежные вопросы