Это не очень трудно дублируйте функциональность BitArray
. Во-первых, если вам нужно меньше 65 бит, вы можете сделать это с помощью long
или меньше.
Чтобы установить отдельный бит:
void Set(ref long ba, int bit)
{
ba |= 1L << bit;
}
Чтобы очистить немного:
void Clear(ref long ba, int bit)
{
long mask = 1L << bit;
mask = ~mask;
ba &= mask;
}
Чтобы увидеть, если бит установлен:
bool IsSet(long ba, int bit)
{
long mask = 1L << bit;
return (ba & mask) != 0;
}
Если у вас есть более чем 64 бит, то вам нужно будет создать массив (byte[]
, возможно), и выполните деление, чтобы определить, какой бит/бит вы хотите использовать dify. Приведенные выше методы будут работать, если вы измените long
на byte
.
Например, если у вас есть:
byte[] myBytes = new byte[128];
У вас есть 1024 бит.
Чтобы установить бит:
void Set (int bit)
{
int byte = bit/8;
int bitIndex = bit%8;
myBytes[byte] |= (byte)(1 << bitIndex);
}
другие методы используют тот же математику, чтобы получить байт и битовый индекс и настройки, очистки и тестирования немного такой же, как с long
приведенном выше примере.
Что именно вам нужно? Может быть, 'byte', который вы можете манипулировать, достаточно? – Bobby
BitArray реализован с использованием целых чисел и побитовых операторов –
@Bobby nope действительно необходимо для работы на уровне бит :-) – TimothyP