Cara Menukar Integer kepada Array Byte dengan Cekap dalam Java
Menukar integer kepada tatasusunan bait ialah tugas biasa dalam pengaturcaraan, terutamanya apabila berurusan dengan protokol rangkaian atau data binari yang disimpan. Di Java, terdapat beberapa cara untuk mendekati penukaran ini, masing-masing mempunyai kelebihan tersendiri.
Menggunakan Kelas ByteBuffer
Salah satu kaedah yang paling serba boleh dan cekap ialah dengan gunakan kelas ByteBuffer, yang menyediakan akses peringkat tinggi kepada data binari. Dengan memperuntukkan ByteBuffer dengan saiz yang mencukupi dan menetapkan susunannya kepada big-endian (memastikan bahawa bait paling penting disimpan dahulu), anda boleh menggunakan kaedah putInt() untuk menulis integer ke penimbal. Tatasusunan bait yang terhasil kemudiannya boleh diperoleh menggunakan kaedah tatasusunan().
Contoh Kod:
ByteBuffer b = ByteBuffer.allocate(4); //b.order(ByteOrder.BIG_ENDIAN); // optional, the initial order of a byte buffer is always BIG_ENDIAN. b.putInt(0xAABBCCDD); byte[] result = b.array();
Penukaran Manual
Jika anda lebih suka pendekatan yang lebih manual, anda juga boleh menukar integer kepada tatasusunan bait dengan mengalih dan menutup setiap bait secara individu. Pendekatan ini memberikan lebih kawalan ke atas endian tatasusunan bait yang terhasil.
Contoh Kod:
byte[] toBytes(int i) { byte[] result = new byte[4]; result[0] = (byte) (i >>> 24); result[1] = (byte) (i >>> 16); result[2] = (byte) (i >>> 8); result[3] = (byte) (i /*>>> 0*/); return result; }
Pendekatan Alternatif
Walaupun kaedah penukaran ByteBuffer dan manual biasa digunakan, terdapat juga pilihan lain yang tersedia. Sebagai contoh, perpustakaan Apache Commons Lang menyediakan kelas ByteUtils dengan kaedah pembantu untuk menukar integer kepada tatasusunan bait. Selain itu, perpustakaan khusus untuk protokol rangkaian atau penyirian data mungkin menawarkan fungsi yang dibuat khusus untuk tujuan ini.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Integer kepada Tatasusunan Byte dalam Java: ByteBuffer lwn. Penukaran Manual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!