Как установить BitArray для установки специфических битов на основе значения?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как установить BitArray для установки специфических битов на основе значения?

Сообщение Anonymous »

Как я могу использовать Bitarray, чтобы сделать несколько таких самых основных, устанавливая значение для битов, а не только биты! Я начинаю сожалеть, когда когда -либо используя это дерьмо под названием Bitarray.

Код: Выделить всё

public enum RULE
{
NOTHING = 0x0,
FIRST_STEP = 0x1,
FOO_YOU = 0x2,
BAR_FOO = 0x10,
FOO = 0x20,
BAR = 0x40,
FOO_BAR = 0x80,
READY = 0x100,
...//LOTS MORE BITS
FINAL_FLAG_BIT= 0x10000000 //Final bit.. uses the 29th bit.
};
< /code>

Теперь скажите, что я делаю это .. < /p>

//only use 29 bits to save memory, probably still uses 4 bytes lol.
BitArray rules= new BitArray(29);

//As you can see what I tried to do.
public bool ruleEnabled(RULE i)
{
return rules[(int)i]; //

Поэтому я потратил впустую около 30 минут, реализуя это, не зная, что одно из его ограничений. Вы знаете, что нет никакого способа поднять его до его значения .. Без использования CopyTO 


, поэтому я в итоге использовал только 1 переменную (кажется, это решение является чище и быстрее) и должен был изменить только 2 метода Setrule и Ruleenabled < /code>, чтобы он работал правильно. < /p>

Код: Выделить всё

private int rules; //uses only 29 of the 32 bits.
public bool ruleEnabled(RULE i)
{
int bits = (int)i;
return (rules & bits) == bits;
}

public void setRule(RULE rule, bool set) {
if (set)
rules |= (int)rule;
else
rules &= ~(int)rule;
}
< /code>

Мой вопрос: поступил ли я правильно? А почему битаррей когда -либо полезен? Если у него так много ограничений .. вы можете выполнять все его операции, такие как и 
или не xor уже с & | ~ ^

Я думаю, что Bitarray лучше всего использовать, когда вы имеете дело с большим количеством битов, тогда любой дат может представлять .. для сжатий/шифений и т. Д. .

Подробнее здесь: https://stackoverflow.com/questions/659 ... d-on-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Является ли BitArray быстрее в C# для получения битового значения, чем простое соединение с побитовым сдвигом?
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить C# BitArray из столбца SQL Server VARBINARY(MAX)
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить C# BitArray из столбца SQL Server VARBINARY(MAX)
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Parallel.For медленнее обычного For при записи в BitArray
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Parallel.For медленнее обычного For при записи в BitArray
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»