Si j'ai un Java BitSet d'une longueur de 500 bits et, je sais, il contient 100 entiers, chacun étant représenté par 5 bits, comment puis-je extraire un tableau de ces entiers? En utilisant certains des exemples en ligne, je suis venu avec ce qui suit:Java: Extraction d'entiers à partir d'un BitSet dont chacun consiste en un bit spécifique
static int[] bitSet2Ints(BitSet bs, int bitNumber)
{
int[] temp = new int[bs.length()/bitNumber];
for (int i = 0; i < temp.length; i++)
{
for (int j = 0; j < bitNumber; j++)
{
if (bs.get(i * bitNumber + j))
{
temp[i] |= 1 << j;
}
}
}
return temp;
}
Je me demandais si cela est la bonne façon de le faire.
Merci!
EDIT: Apparemment, le code ne produit pas le résultat attendu. Je l'ai fait un test unitaire et l'entrée et la sortie étaient complètement différentes:
Ceci est mon entrée:
Binary String: 0 is 00000
Binary String: 1 is 00001
Binary String: 2 is 00010
Binary String: 3 is 00011
Binary String: 4 is 00100
Binary String: 5 is 00101
Binary String: 6 is 00110
Binary String: 7 is 00111
Binary String: 8 is 01000
Binary String: 9 is 01001
Binary String: 10 is 01010
Binary String: 11 is 01011
Binary String: 12 is 01100
Binary String: 13 is 01101
Binary String: 14 is 01110
Binary String: 15 is 01111
Binary String: 16 is 10000
Binary String: 17 is 10001
Binary String: 18 is 10010
Binary String: 19 is 10011
Binary String: 20 is 10100
Binary String: 21 is 10101
Binary String: 22 is 10110
Binary String: 23 is 10111
Binary String: 24 is 11000
Binary String: 25 is 11001
Binary String: 26 is 11010
Binary String: 27 is 11011
Binary String: 28 is 11100
Binary String: 29 is 11101
Binary String: 30 is 11110
Binary String: 31 is 11111
Ceci est ma sortie:
NUMBER OF VALUES EXTRACTED: 32
INTEGER CONVERTED: 0
INTEGER CONVERTED: 16
INTEGER CONVERTED: 8
INTEGER CONVERTED: 24
INTEGER CONVERTED: 4
INTEGER CONVERTED: 20
INTEGER CONVERTED: 12
INTEGER CONVERTED: 28
INTEGER CONVERTED: 2
INTEGER CONVERTED: 18
INTEGER CONVERTED: 10
INTEGER CONVERTED: 26
INTEGER CONVERTED: 6
INTEGER CONVERTED: 22
INTEGER CONVERTED: 14
INTEGER CONVERTED: 30
INTEGER CONVERTED: 1
INTEGER CONVERTED: 17
INTEGER CONVERTED: 9
INTEGER CONVERTED: 25
INTEGER CONVERTED: 5
INTEGER CONVERTED: 21
INTEGER CONVERTED: 13
INTEGER CONVERTED: 29
INTEGER CONVERTED: 3
INTEGER CONVERTED: 19
INTEGER CONVERTED: 11
INTEGER CONVERTED: 27
INTEGER CONVERTED: 7
INTEGER CONVERTED: 23
INTEGER CONVERTED: 15
INTEGER CONVERTED: 31
00001 ne devrait pas convertir en 1? C'est par exemple ce que Integer.parse ("00001", 2) produirait. – TheConstructor
Exactement, TheConstructor! Mais le code inclus (le vôtre et le mien) produit 16 à la place. –