Maison  >  Article  >  Java  >  Comment convertir un long en tableau d'octets et inversement en Java ?

Comment convertir un long en tableau d'octets et inversement en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 16:58:02368parcourir

How to Convert a Long to a Byte Array and Back in Java?

Convertir Long en tableau d'octets et inversement en Java

En Java, convertir une valeur longue en octet[] et inversement peut être un problème exigence commune pour divers scénarios. Explorons des moyens efficaces pour y parvenir.

Conversion de Long en tableau d'octets

Pour convertir un long en octet[], nous pouvons utiliser la classe ByteBuffer de Java. Voici un exemple simple :

<code class="java">public byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}</code>

Conversion d'un tableau d'octets en long

Pour reconvertir l'octet[] en long, nous pouvons utiliser une autre instance de ByteBuffer :

<code class="java">public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip();
    return buffer.getLong();
}</code>

Remarque : Dans le code ci-dessus, il est crucial d'appeler buffer.flip() avant de récupérer la valeur longue, car cela fait passer le tampon du mode écriture au mode lecture.

Approche optimisée basée sur les classes

Pour éviter de créer plusieurs instances de ByteBuffer pour des conversions répétées, vous pouvez créer une classe distincte comme celle-ci :

<code class="java">public class ByteUtils {
    private static ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);

    public static byte[] longToBytes(long x) {
        buffer.putLong(0, x);
        return buffer.array();
    }

    public static long bytesToLong(byte[] bytes) {
        buffer.put(bytes, 0, bytes.length);
        buffer.flip();
        return buffer.getLong();
    }
}</code>

Considérations sur le caractère boutien

Lors de la conversion entre long et byte[], vous devez prendre en compte le caractère boutiste du système avec lequel vous travaillez. L'endianité fait référence à l'ordre dans lequel les octets sont stockés en mémoire (petit-boutiste ou gros-boutiste). Java utilise le big-endian, donc cet aspect est géré automatiquement.

Approches alternatives

Il existe des bibliothèques alternatives comme Guava qui fournissent des méthodes pratiques pour effectuer ce type de conversion. Cependant, les solutions Java natives présentées ici peuvent être efficaces et fiables pour la plupart des cas d'utilisation.

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