Java-¿Convertir int a Byte Array de 4 Bytes?




buffer (3)

Esto debería funcionar:

public static final byte[] intToByteArray(int value) {
    return new byte[] {
            (byte)(value >>> 24),
            (byte)(value >>> 16),
            (byte)(value >>> 8),
            (byte)value};
}

Código tomado de aquí .

Editar Una solución aún más simple se da en este hilo .

Posible duplicado:
Convertir entero en matriz de bytes (Java)

Necesito almacenar la longitud de un búfer, en una matriz de bytes de 4 bytes de ancho.

Pseudo código:

private byte[] convertLengthToByte(byte[] myBuffer)
{
    int length = myBuffer.length;

    byte[] byteLength = new byte[4];

    //here is where I need to convert the int length to a byte array
    byteLength = length.toByteArray;

    return byteLength;
}

¿Cuál sería la mejor manera de lograr esto? Teniendo en cuenta que debo convertir esa matriz de bytes a un número entero más tarde.


Puede convertir yourInt en bytes usando un ByteBuffer como este:

return ByteBuffer.allocate(4).putInt(yourInt).array();

Tenga en cuenta que es posible que tenga que pensar en el orden de bytes al hacerlo.


public static  byte[] my_int_to_bb_le(int myInteger){
    return ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(myInteger).array();
}

public static int my_bb_to_int_le(byte [] byteBarray){
    return ByteBuffer.wrap(byteBarray).order(ByteOrder.LITTLE_ENDIAN).getInt();
}

public static  byte[] my_int_to_bb_be(int myInteger){
    return ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(myInteger).array();
}

public static int my_bb_to_int_be(byte [] byteBarray){
    return ByteBuffer.wrap(byteBarray).order(ByteOrder.BIG_ENDIAN).getInt();
}






buffer