Dalam tutorial ini, kita akan menjelajahi berbagai pendekatan untuk mengonversi larik byte menjadi nilai numerik (int, long, float, double) dan sebaliknya Show
Byte adalah unit dasar informasi dalam penyimpanan dan pemrosesan komputer. Tipe primitif yang didefinisikan dalam bahasa Java adalah cara mudah untuk memanipulasi banyak byte pada saat yang bersamaan. Oleh karena itu, ada hubungan konversi yang melekat antara array byte dan tipe primitif Karena tipe short dan char hanya terdiri dari dua byte, mereka tidak membutuhkan banyak perhatian. Jadi, kita akan fokus pada konversi antara array byte dan tipe int, long, float, dan double 2. Menggunakan Shift OperatorCara paling mudah untuk mengonversi array byte menjadi nilai numerik adalah menggunakan 2. 1. Byte Array ke int dan longSaat mengonversi array byte ke nilai int, kami menggunakan operator << (geser kiri).
Biasanya, panjang larik byte dalam cuplikan kode di atas harus sama dengan atau kurang dari empat. Itu karena nilai int menempati empat byte. Jika tidak, itu akan menyebabkan int range overflow Untuk memverifikasi kebenaran konversi, mari kita tentukan dua konstanta _Jika kita melihat lebih dekat pada dua konstanta ini, INT_BYTE_ARRAY dan INT_VALUE, kita akan menemukan bahwa keduanya merupakan representasi yang berbeda dari angka heksadesimal 0xCAFEBABE Kemudian, mari kita periksa apakah konversi ini benar
Demikian pula, saat mengonversi larik byte ke nilai panjang, kita dapat menggunakan kembali cuplikan kode di atas dengan dua modifikasi. tipe nilainya panjang dan panjang byte harus sama dengan atau kurang dari delapan 2. 2. int dan long ke Byte ArraySaat mengonversi nilai int ke array byte, kita dapat menggunakan operator >> (geser kanan bertanda tangan) atau >>> (geser kanan tak bertanda tangan)
Pada cuplikan kode di atas, kita dapat mengganti operator >> dengan operator >>>. Itu karena kami hanya menggunakan byte yang awalnya berisi parameter nilai. Jadi, pergeseran kanan dengan ekstensi tanda atau ekstensi nol tidak akan mempengaruhi hasil akhir Kemudian, kita dapat memeriksa kebenaran konversi di atas _Saat mengonversi nilai long ke array byte, kita hanya perlu mengubah Integer. BYTE ke Panjang. BYTES dan pastikan jenis nilainya panjang 2. 3. Byte Array untuk mengapung dan menggandakanSaat mengonversi array byte menjadi pelampung, kami menggunakan Float. metode intBitsToFloat()
Dari cuplikan kode di atas, kita dapat mengetahui bahwa array byte tidak dapat diubah langsung menjadi nilai float. Pada dasarnya, dibutuhkan dua langkah terpisah. Pertama, kami mentransfer dari array byte ke nilai int, dan kemudian kami menginterpretasikan pola bit yang sama menjadi nilai float Untuk memverifikasi kebenaran konversi, mari kita tentukan dua konstanta _Kemudian, mari kita periksa apakah konversi ini benar
Dengan cara yang sama, kita dapat menggunakan nilai menengah panjang dan Double. metode longBitsToDouble() untuk mengonversi larik byte menjadi nilai ganda 2. 4. float dan gandakan ke Byte ArraySaat mengonversi float ke array byte, kita dapat memanfaatkan Float. metode floatToIntBits() _Kemudian, mari kita periksa apakah konversi ini benar _Dengan analogi, kita bisa memanfaatkan si Ganda. metode doubleToLongBits() untuk mengonversi nilai ganda menjadi larik byte 3. Menggunakan ByteBufferJawa. nio. Kelas ByteBuffer menyediakan cara yang rapi dan terpadu untuk menerjemahkan antara array byte dan nilai numerik (int, long, float, double) 3. 1. Byte Array ke Nilai NumerikSekarang, kami menggunakan kelas ByteBuffer untuk mengonversi array byte menjadi nilai int _0Kemudian, kami menggunakan kelas ByteBuffer untuk mengubah nilai int menjadi array byte _1Perlu dicatat bahwa dua cuplikan kode di atas mengikuti pola yang sama
Pola ini sangat fleksibel, dan mendukung konversi tipe long, float, dan double. Satu-satunya modifikasi yang perlu kita buat adalah informasi terkait tipe 3. 2. Menggunakan Larik Byte yang AdaSelain itu, ByteBuffer. metode wrap(byte[]) memungkinkan kita untuk menggunakan kembali array byte yang ada tanpa membuat yang baru _2Namun, kita juga harus mencatat bahwa panjang variabel bytes di atas sama dengan atau lebih besar dari ukuran tipe target (Float. BYTE). Jika tidak, itu akan melempar BufferUnderflowException 4. Menggunakan BigIntegerTujuan utama dari java. matematika. Kelas BigInteger adalah untuk mewakili nilai numerik besar yang tidak sesuai dengan tipe data primitif. Meskipun kita dapat menggunakannya untuk mengonversi antara array byte dan nilai primitif, menggunakan BigInteger agak berat untuk tujuan semacam ini 4. 1. Byte Array ke int dan longSekarang, mari gunakan kelas BigInteger untuk mengonversi array byte menjadi nilai int _3Demikian pula, kelas BigInteger memiliki metode longValue() untuk mengonversi array byte menjadi nilai long _4Selain itu, kelas BigInteger juga memiliki metode intValueExact() dan metode longValueExact(). Kedua metode ini harus digunakan dengan hati-hati. jika objek BigInteger masing-masing berada di luar jangkauan tipe int atau long, kedua metode akan melempar ArithmeticException Saat mengonversi nilai int atau long ke array byte, kita dapat menggunakan cuplikan kode yang sama _5Namun, metode toByteArray() dari kelas BigInteger mengembalikan jumlah byte minimum, tidak harus empat atau delapan byte 4. 2. Byte Array untuk mengapung dan menggandakanMeskipun kelas BigInteger memiliki metode floatValue() , kita tidak dapat menggunakannya untuk mengonversi larik byte menjadi nilai float seperti yang diharapkan. Jadi apa yang harus kita lakukan? _6Dengan cara yang sama, kita dapat mengonversi nilai float menjadi array byte _7Begitu juga dengan memanfaatkan Double. longBitsToDouble() dan Double. metode doubleToLongBits() , kita dapat menggunakan kelas BigInteger untuk mengonversi antara array byte dan nilai ganda 5. Menggunakan jambu bijiPustaka Guava memberi kita metode mudah untuk melakukan konversi semacam ini 5. 1. Byte Array ke int dan longDi dalam Guava, kelas Ints di com. google. umum. paket primitif berisi metode fromByteArray(). Oleh karena itu, cukup mudah bagi kita untuk mengubah array byte menjadi nilai int _8Kelas Ints juga memiliki metode toByteArray() yang dapat digunakan untuk mengonversi nilai int menjadi array byte _9Dan, kelas Longs serupa digunakan dengan kelas Ints 0Selanjutnya, jika kita memeriksa kode sumber dari metode fromByteArray() dan toByteArray() , kita dapat mengetahui bahwa kedua metode tersebut menggunakan operator shift untuk melakukan tugasnya 5. 2. Byte Array untuk mengapung dan menggandakanAda juga kelas Floats dan Doubles dalam paket yang sama. Namun, tidak satu pun dari kedua kelas ini yang mendukung metode fromByteArray() dan toByteArray() Namun, kita bisa memanfaatkan Float. intBitsToFloat(), Float. floatToIntBits(), Gandakan. longBitsToDouble(), dan Gandakan. metode doubleToLongBits() untuk menyelesaikan konversi antara larik byte dan nilai float atau double. Untuk singkatnya, kami telah menghilangkan kode di sini 6. Menggunakan Commons LangSaat kami menggunakan Apache Commons Lang 3, agak rumit untuk melakukan konversi semacam ini. Itu karena perpustakaan Commons Lang menggunakan array byte little-endian secara default. Namun, array byte yang kami sebutkan di atas semuanya dalam urutan big-endian. Jadi, kita perlu mengubah array byte big-endian menjadi array byte little-endian dan sebaliknya 6. 1. Byte Array ke int dan longKelas Konversi di org. apache. milik bersama. paket lang3 menyediakan metode byteArrayToInt() dan intToByteArray() Sekarang, mari ubah array byte menjadi nilai int 1Pada kode di atas, kita membuat salinan dari variabel byte asli. Ini karena terkadang, kita tidak ingin mengubah isi dari array byte asli Kemudian, mari kita ubah nilai int menjadi array byte 2Kelas Konversi juga mendefinisikan metode byteArrayToLong() dan longToByteArray(). Dan, kita dapat menggunakan kedua metode ini untuk mengubah antara array byte dan nilai yang panjang 6. 2. Byte Array untuk mengapung dan menggandakanNamun, kelas Konversi tidak secara langsung menyediakan metode yang sesuai untuk mengonversi nilai float atau double Sekali lagi, kita memerlukan int perantara atau nilai panjang untuk mengubah antara array byte dan nilai float atau double 7. KesimpulanPada artikel ini, kami mengilustrasikan berbagai cara untuk mengonversi larik byte menjadi nilai numerik menggunakan Java biasa melalui operator shift, ByteBuffer, dan BigInteger. Kemudian, kami melihat konversi yang sesuai menggunakan Guava dan Apache Commons Lang Bagaimana cara mengubah string byte menjadi float Python?Kita dapat mengonversi sebuah string menjadi float dengan Python menggunakan fungsi float() . Ini adalah fungsi bawaan yang digunakan untuk mengubah objek menjadi angka floating point. Secara internal, fungsi float() memanggil fungsi __float__() objek tertentu.
Bagaimana Anda mengonversi byte ke array dengan Python?Python. fungsi bytearray()
. Ini memberikan urutan bilangan bulat yang bisa berubah dalam kisaran 0
Bagaimana Anda bisa mengubah array byte menjadi string?Ada dua cara untuk mengonversi array byte ke String. . Dengan menggunakan konstruktor kelas String Dengan menggunakan pengkodean UTF-8 Bagaimana cara mengubah byte ke int Python?Sintaksis. int. from_bytes(byte, byteorder, *, ditandatangani=Salah) Parameter Mengembalikan – sebuah int yang setara dengan byte yang diberikan |