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.
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