Maison > Java > javaDidacticiel > Comment puis-je convertir les longs Java en octets et inversement ?

Comment puis-je convertir les longs Java en octets et inversement ?

Susan Sarandon
Libérer: 2024-11-09 02:35:02
original
469 Les gens l'ont consulté

How can I convert Java longs to bytes and back?

Conversion des fichiers longs Java en octets et inversement

Lors de la transmission de données via une connexion TCP, il est souvent nécessaire de convertir les types de données en tableaux d'octets pour transfert efficace. En Java, la conversion d'un long en byte[] et inversement peut être réalisée par diverses méthodes.

Une approche consiste à utiliser la classe ByteBuffer. En créant un ByteBuffer avec Long.BYTES (8 octets), vous pouvez stocker la valeur longue à l'aide de la méthode putLong() et récupérer le tableau d'octets à l'aide de la méthode array(). Pour reconvertir le tableau d'octets en long, vous devez créer un autre ByteBuffer, y mettre() le tableau d'octets et utiliser la méthode getLong() pour obtenir la valeur longue.

Voici un exemple :

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

public long bytesToLong(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.put(bytes);
    buffer.flip(); // Ensure the buffer is ready for reading
    return buffer.getLong();
}</code>
Copier après la connexion

Une autre approche consiste à utiliser une classe d'assistance pour éviter la création répétitive de ByteBuffer. La classe ByteUtils ci-dessous encapsule les méthodes de conversion, éliminant ainsi le besoin de créer plusieurs ByteBuffers :

<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>
Copier après la connexion

Il convient de noter qu'il existe également des bibliothèques comme Guava qui fournissent des moyens pratiques d'effectuer ces conversions, réduisant ainsi le besoin de personnalisation mises en œuvre. Cependant, ces approches offrent l'avantage de répondre automatiquement aux problèmes d'endianité, garantissant que les données sont correctement transmises et interprétées quelle que soit l'architecture du système sous-jacent.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal