Al fin después de mucho batallar pudimos dar con la respuesta de esta cuestión que muchos de nuestros lectores de este sitio web presentan. Si tienes algo que aportar no dudes en aportar tu información.
Solución:
Eche un vistazo a la clase ByteBuffer.
ByteBuffer b = ByteBuffer.allocate(4);
//b.order(ByteOrder.BIG_ENDIAN); // optional, the initial order of a byte buffer is always BIG_ENDIAN.
b.putInt(0xAABBCCDD);
byte[] result = b.array();
Establecer el orden de los bytes asegura que result[0] == 0xAA
, result[1] == 0xBB
, result[2] == 0xCC
y result[3] == 0xDD
.
O alternativamente, podrías hacerlo manualmente:
byte[] toBytes(int i)
byte[] result = new byte[4];
result[0] = (byte) (i >> 24);
result[1] = (byte) (i >> 16);
result[2] = (byte) (i >> 8);
result[3] = (byte) (i /*>> 0*/);
return result;
los ByteBuffer
Sin embargo, la clase fue diseñada para tales tareas de manos sucias. De hecho el privado java.nio.Bits
define estos métodos de ayuda que son utilizados por ByteBuffer.putInt()
:
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);
Utilizando BigInteger
:
private byte[] bigIntToByteArray( final int i )
BigInteger bigInt = BigInteger.valueOf(i);
return bigInt.toByteArray();
Utilizando DataOutputStream
:
private byte[] intToByteArray ( final int i ) throws IOException
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeInt(i);
dos.flush();
return bos.toByteArray();
Utilizando ByteBuffer
:
public byte[] intToBytes( final int i )
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(i);
return bb.array();
usa esta función a mi me funciona
public byte[] toByteArray(int value)
return new byte[]
(byte)(value >> 24),
(byte)(value >> 16),
(byte)(value >> 8),
(byte)value;
traduce el int en un valor de byte
Si guardas algún recelo o forma de ascender nuestro enunciado puedes añadir una glosa y con placer lo interpretaremos.