Memanipulasi Data Tidak Ditandatangani dalam Java: Menukar Bait Ditandatangani
Di Java, jenis primitif seperti bait ditandatangani secara semula jadi, bermakna ia mewakili nilai data dalam julat yang ditentukan. Walau bagaimanapun, kadangkala perlu untuk mengendalikan data yang dianggap sebagai tidak ditandatangani dalam konteks lain.
Cabaran Menukar Bait Tidak Ditandatangani
Bahasa Java tidak menyediakan sokongan asli untuk yang tidak ditandatangani jenis data. Oleh itu, apabila membaca data yang tidak ditandatangani ke dalam bait yang ditandatangani, nilai mungkin kelihatan rosak kerana Java mentafsirkannya sebagai nombor yang ditandatangani.
Mengatasi Cabaran
Untuk memanipulasi bait yang tidak ditandatangani dalam Java, kita boleh memanfaatkan operasi bitwise. Pada asasnya, operasi ini membolehkan kami menganggap bait yang ditandatangani seolah-olah ia tidak ditandatangani.
Penyelesaian Bitwise Menggunakan Topeng
Satu pendekatan melibatkan penggunaan topeng bitwise untuk mengasingkan bit yang dikehendaki corak. Dalam contoh berikut, kami mentakrifkan kaedah unsignedToBytes() yang:
public static int unsignedToBytes(byte a) { int b = a & 0xFF; return b; }
Dalam kaedah ini, kami menggunakan operasi AND bitwise pada input byte a dan mask 0xFF. Topeng ini secara berkesan mengeluarkan sebarang bit melebihi bit ke-8, hanya meninggalkan nilai tidak bertanda yang diingini dalam b.
Pertimbangan Tambahan
Perhatikan bahawa walaupun anda memanipulasi bait bertandatangan sebagai tidak bertanda menggunakan operasi bitwise, perwakilan data asas kekal tidak berubah. Untuk memastikan bahawa operasi yang melibatkan nilai yang tidak ditandatangani ini dikendalikan dengan betul, anda harus mempertimbangkan untuk menggunakan kaedah pembalut atau pembolehubah yang secara eksplisit menentukan tafsiran data.
Contohnya:
void printUnsignedByte(byte b) { int unsignedByte = b & 0xFF; System.out.println(unsignedByte); // "200" }
Kaedah ini mencetak nilai yang tidak ditandatangani bagi bait input b dengan menggunakan topeng bitwise dan mentafsirkan hasilnya sebagai int yang tidak ditandatangani, tanpa mengira nilai yang ditandatangani disimpan dalam b.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Bait Tidak Ditandatangani di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!