Saltar al contenido

Cómo agregar relleno a un byte array?

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));

Reseñas y puntuaciones del post

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *