Il est pas très difficile à dupliquer la fonctionnalité de BitArray
. Tout d'abord, si vous avez besoin de moins de 65 bits, alors vous pouvez le faire avec un long
ou plus petit.
Pour définir un bit individuel:
void Set(ref long ba, int bit)
{
ba |= 1L << bit;
}
Pour effacer un peu:
void Clear(ref long ba, int bit)
{
long mask = 1L << bit;
mask = ~mask;
ba &= mask;
}
Pour voir si un bit est:
bool IsSet(long ba, int bit)
{
long mask = 1L << bit;
return (ba & mask) != 0;
}
Si vous avez plus de 64 bits, alors vous devrez créer un tableau (byte[]
, probablement), et faire la division pour déterminer quel octet/bit vous voulez dify. Les méthodes ci-dessus fonctionneront, à condition que vous changiez le long
en byte
.
Par exemple, si vous avez:
byte[] myBytes = new byte[128];
Vous avez 1024 bits.
Pour définir un bit:
void Set (int bit)
{
int byte = bit/8;
int bitIndex = bit%8;
myBytes[byte] |= (byte)(1 << bitIndex);
}
Les autres méthodes utilisent le même calcul pour obtenir l'octet et l'indice de bits, et le réglage, la compensation et le test d'un bit est le même que l'exemple long
ci-dessus.
De quoi avez-vous besoin exactement? Peut-être qu'un «byte» que vous pouvez manipuler est-il suffisant? – Bobby
BitArray est implémenté en utilisant des entiers et des opérateurs bit à bit. –
@Bobby non vraiment besoin de fonctionner au niveau du bit :-) – TimothyP