Si hallas algún fallo en tu código o trabajo, recuerda probar siempre en un entorno de testing antes subir el código al proyecto final.
Solución:
8 bytes array es de 64 bits. Si inicializa el array como
byte[] aKey = new byte [8]
todos los bytes se inicializan con 0. Si configura los primeros 40 bits, es decir, 5 bytes, entonces los otros 3 bytes, es decir, de 41 a 64 bits todavía están configurados en 0. No tienes que resetearlos.
Sin embargo, si su array ya está inicializado con algunos valores y desea borrar los bits del 41 al 56, hay algunas formas de hacerlo.
Primero:
solo puedes configurar aKey[5] = 0
y aKey[6] = 0
Esto establecerá el bye 6 y el byte 7, que componen del bit 41 al 56, a 0
Segundo: Si está tratando con bits, también puede usar BitSet. Sin embargo, en su caso, veo que el primer enfoque es mucho más fácil, especialmente si es anterior a Java 7, algunos de los métodos a continuación no existen y debe escribir sus propios métodos para convertir de byte array a bit set y viceversa.
byte[] b = new byte[8];
BitSet bitSet = BitSet.valueOf(b);
bitSet.clear(41, 56); //This will clear 41st to 56th Bit
b = bitSet.toByteArray();
Nota: BitSet.valueOf(byte[])
y BitSet.toByteArray()
existe solo desde Java 7.
Utilice System.arraycopy() para insertar dos bytes (56-40 = 16 bits) al comienzo de su array.
static final int PADDING_SIZE = 2;
public static void main(String[] args)
byte[] aKey = 1, 2, 3, 4, 5, 6, 7, 8; // your array of size 8
System.out.println(Arrays.toString(aKey));
byte[] newKey = new byte[8];
System.arraycopy(aKey, 0, newKey, PADDING_SIZE, aKey.length - PADDING_SIZE); // right shift
System.out.println(Arrays.toString(newKey));