"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo convertir de manera eficiente números enteros a matrices de bytes en Java?

¿Cómo convertir de manera eficiente números enteros a matrices de bytes en Java?

Publicado el 2024-11-15
Navegar:537

How to Efficiently Convert Integers to Byte Arrays in Java?

Conversión eficiente de números enteros a matrices de bytes en Java

La conversión de un número entero a una matriz de bytes puede resultar útil para diversos fines, como la red transmisiones o almacenamiento de datos. Existen varios enfoques para lograr esta conversión.

Clase ByteBuffer:

Un método eficaz es utilizar la clase ByteBuffer. ByteBuffer es un búfer que almacena datos binarios y proporciona varias operaciones para manipularlos. Para convertir un número entero en una matriz de bytes usando ByteBuffer:

ByteBuffer b = ByteBuffer.allocate(4); // Allocate a 4-byte buffer
b.putInt(0xAABBCCDD); // Write the integer value to the buffer

byte[] result = b.array(); // Retrieve the byte array from the buffer

Aquí, el orden de bytes del búfer garantiza que los bytes estén organizados en el orden correcto.

Conversión manual:

Como alternativa, puedes convertir manualmente el número entero en una matriz de bytes:

byte[] toBytes(int i) {
  // Create a new byte array of length 4
  byte[] result = new byte[4];
  
  // Shift bits and assign to each byte
  result[0] = (byte) (i >> 24);
  result[1] = (byte) (i >> 16);
  result[2] = (byte) (i >> 8);
  result[3] = (byte) i;
  
  return result;
}

Este enfoque requiere un desplazamiento de bits explícito y una asignación a cada byte.

Métodos auxiliares en java.nio.Bits:

La clase ByteBuffer utiliza métodos auxiliares internos definidos en la clase java.nio.Bits:

private static byte int3(int x) { return (byte)(x >> 24); }
private static byte int2(int x) { return (byte)(x >> 16); }
private static byte int1(int x) { return (byte)(x >>  8); }
private static byte int0(int x) { return (byte)(x >>  0); }

Estos métodos simplifican las operaciones de desplazamiento de bits mencionadas anteriormente.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3