Conversão eficiente de números inteiros em matrizes de bytes em Java
A conversão de um número inteiro em uma matriz de bytes pode ser útil para vários propósitos, como rede transmissões ou armazenamento de dados. Existem várias abordagens para obter essa conversão.
Classe ByteBuffer:
Um método eficiente é usar a classe ByteBuffer. ByteBuffer é um buffer que armazena dados binários e fornece várias operações para manipulá-los. Para converter um número inteiro em uma 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
Aqui, a ordem dos bytes do buffer garante que os bytes sejam organizados na ordem correta.
Conversão manual:
Como alternativa, você pode converter manualmente o número inteiro em uma 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; }
Esta abordagem requer mudança de bits explícita e atribuição a cada byte.
Métodos auxiliares em java.nio.Bits:
A classe ByteBuffer utiliza métodos auxiliares internos definidos na classe 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); }
Esses métodos simplificam as operações de mudança de bits mencionadas acima.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3