Maison >Java >javaDidacticiel >Comment convertir des entiers en tableaux d'octets et vice versa en Java ?

Comment convertir des entiers en tableaux d'octets et vice versa en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 16:37:30504parcourir

How do you convert integers to byte arrays and vice versa in Java?

Conversion d'entiers en tableaux d'octets et vice versa en Java

Le stockage de nombres dans des tableaux d'octets est une opération fondamentale en programmation. Comprendre le processus de conversion entre les entiers et les tableaux d'octets est essentiel pour manipuler les données efficacement.

Entier en tableau d'octets

Pour convertir un entier en tableau d'octets, vous pouvez utiliser ByteBuffer, une classe du package java.nio. Cette classe offre un moyen pratique d'interagir avec des données binaires. Voici un exemple :

<code class="java">byte[] arr = { 0x00, 0x01 }; // Source byte array
short num = 0;

ByteBuffer wrapped = ByteBuffer.wrap(arr); // Wraps source array in a buffer
wrapped.get(num); // Reads 2 bytes from the buffer and stores in num</code>

Ce code enveloppe le tableau d'octets source dans un ByteBuffer et lit les deux premiers octets (0x00 et 0x01) dans un nombre entier court (num).

Byte Array to Integer

Pour reconvertir un tableau d'octets en entier, vous pouvez utiliser la même classe ByteBuffer. Voici un exemple :

<code class="java">byte[] arr = { 0x00, 0x01 };
ByteBuffer dbuf = ByteBuffer.allocate(2);
dbuf.put(arr); // Writes source bytes to the buffer
short num = dbuf.getShort(); // Reads 2 bytes from the buffer and stores in num </code>

Ce code écrit le tableau d'octets source dans un ByteBuffer, puis lit les deux premiers octets (0x00 et 0x01) dans un nombre entier court (num).

Comprendre le code

La clé pour comprendre la classe ByteBuffer est qu'elle utilise un ordre d'octets (big-endian ou small-endian) pour déterminer la disposition des octets dans le tableau. Big-endian signifie que l'octet le plus significatif est stocké au début du tableau, tandis que small-endian le stocke à la fin.

Par défaut, le ByteBuffer utilise l'ordre des octets big-endian. Vous pouvez spécifier un ordre petit-boutiste en appelant enveloppé.order(ByteOrder.LITTLE_ENDIAN) avant d'effectuer une opération.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn