Saltar al contenido

Convertir entero en byte array (Java)

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.

¡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 *