Rumah >Java >javaTutorial >Bagaimana untuk Menukar Long kepada Array Byte dan Kembali di Java?

Bagaimana untuk Menukar Long kepada Array Byte dan Kembali di Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-06 16:58:02499semak imbas

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

Tukar Long kepada Array Byte dan Kembali dalam Java

Di Java, menukar nilai long kepada bait[] dan back boleh menjadi keperluan biasa untuk pelbagai senario. Mari kita terokai cara yang cekap untuk mencapai matlamat ini.

Menukar Long ke Byte Array

Untuk menukar long kepada bait[], kita boleh menggunakan kelas ByteBuffer Java. Berikut ialah contoh mudah:

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

Menukar Tatasusunan Byte kepada Panjang

Untuk menukar bait[] kembali kepada panjang, kita boleh menggunakan satu lagi contoh ByteBuffer:

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

Nota: Dalam kod di atas, adalah penting untuk memanggil buffer.flip() sebelum mendapatkan nilai panjang, kerana ia menukar penimbal daripada mod tulis kepada mod baca.

Pendekatan Berasaskan Kelas Dioptimumkan

Untuk mengelak daripada mencipta berbilang tika ByteBuffer untuk penukaran berulang, anda boleh membuat kelas berasingan seperti ini:

<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>

Pertimbangan Endian-ness

Apabila menukar antara panjang dan bait[], anda harus mempertimbangkan sifat endian sistem yang sedang anda gunakan. Endian-ness merujuk kepada susunan di mana bait disimpan dalam ingatan (little-endian atau big-endian). Java menggunakan big-endian, jadi aspek ini dikendalikan secara automatik.

Pendekatan Alternatif

Terdapat perpustakaan alternatif seperti Guava yang menyediakan kaedah yang mudah untuk melaksanakan jenis penukaran ini. Walau bagaimanapun, penyelesaian Java asli yang dibentangkan di sini boleh menjadi cekap dan boleh dipercayai untuk kebanyakan kes penggunaan.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Long kepada Array Byte dan Kembali di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn