Conversión de largo a matriz de bytes y viceversa en Java
En Java, conversión de un tipo de datos primitivo largo a una matriz de bytes (byte[] ) y viceversa es una tarea común para diversas operaciones, como enviar datos a través de una conexión TCP. Aquí hay una solución integral para lograr esta conversión:
Long to Byte Array
public byte[] longToBytes(long x) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(x);
return buffer.array();
}
Este método utiliza la clase ByteBuffer para crear un búfer de tamaño Long.BYTES, que es el número de bytes necesarios para representar un valor largo. El método putLong() se utiliza para escribir el valor largo en el búfer, y el método array() devuelve la matriz de bytes subyacente que representa el valor largo.
Byte Array to Long
public long bytesToLong(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.put(bytes);
buffer.flip(); // Flip the buffer to prepare for reading
return buffer.getLong();
}
Para volver a convertir la matriz de bytes en larga, se crea un nuevo ByteBuffer y se carga con la matriz de bytes dada. El método flip() se utiliza para preparar el búfer para la lectura. Finalmente, el método getLong() lee el valor largo del búfer.
Encapsulación en una clase auxiliar
Para mayor comodidad, los métodos de conversión se pueden encapsular en una utilidad clase:
public class ByteUtils {
private static ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
public static byte[] longToBytes(long x) {
buffer.putLong(0, x);
return buffer.array();
}
public static long bytesToLong(byte[] bytes) {
buffer.put(bytes, 0, bytes.length);
buffer.flip(); // Flip the buffer to prepare for reading
return buffer.getLong();
}
}
Esta clase de utilidad proporciona una forma sencilla de realizar la conversión sin tener que crear y administrar instancias de ByteBuffer cada vez.
Consideraciones de endianidad
Nota que la clase ByteBuffer utiliza la endianidad nativa del sistema. Si se requiere compatibilidad multiplataforma, es posible que sean necesarias consideraciones adicionales para el manejo del endianismo.
Solución alternativa: uso de bibliotecas
Si bien las soluciones Java nativas proporcionadas anteriormente son adecuadas, pueden volverse tediosos en ciertos escenarios. Para necesidades de conversión de datos complejas o ampliadas, considere utilizar una biblioteca como Guava o Apache Commons, que brindan soluciones más completas y eficientes.
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