J'ai un tableau d'octets. Je veux simuler des données corrompues en changeant un bit, deux et trois bits.Changement de bits dans un tableau d'octets
Comment faire?
J'ai un tableau d'octets. Je veux simuler des données corrompues en changeant un bit, deux et trois bits.Changement de bits dans un tableau d'octets
Comment faire?
Utilisez le XOR (^) opérateur:
// Generate some data.
byte[] b = new byte[1024];
new Random().nextBytes(b);
// Simulate corruption of data by flipping the low 3 bits.
for (int i = 0; i < b.length; i++) {
//b[i] ^= 0x1; // change one bit
//b[i] ^= 0x3; // change two bits
b[i] ^= 0x7; // change three bits
}
Utilisez un BitSet
.
La manière habituelle de mettre un peu dans la plupart des langues est à « ou » (|) avec un masque de bits avec seulement bit, et La manière habituelle de désarmer c'est de 'et' (&) avec un masque de bits sans que ce jeu de bits.
donc faire 8 ensemble des masques de bits
byte setbm1 = 1; //00000001
byte setbm2 = 1 >>1;
byte setbm3 = 1>>2;
...
...
byte setbm8 = 1>>7; //10000000
et 8 « et » masques de bits
byte unsetbm1 ^= setbm1; //11111110
..
..
byte unsetbm1 ^= setbm8; //01111111
Pour définir la première utilisation de bits (supposons tableau est un tableau d'octets et i est un nombre entier)
array[i] |= setbm1
pour la désélectionner
array[i] ^= setbm1
Sinon, vous pouvez utiliser http://java.sun.com/javase/6/docs/api/java/util/BitSet.html
La colonne « associée » à droite montre les doublons possibles suivants: http://stackoverflow.com/questions/1956160/good-tutorials-on-bitwise-operations-in- java, http://stackoverflow.com/questions/560956/bitwise-and-bitwise-inclusive-or-question-in-java –