Dalam Go, anda boleh menukar integer yang tidak ditandatangani kepada tatasusunan bait menggunakan kaedah Uint16() dan Uint32() bagi jenis binari.BigEndian dan binari.LittleEndian. Walau bagaimanapun, anda mungkin perasan ketiadaan kaedah Int16() atau Float32() yang setara.
Endianness merujuk kepada susunan bait yang disimpan dalam ingatan untuk sesuatu tertentu jenis angka. Pakej perduaan Go menyediakan kefungsian untuk menukar antara endian yang berbeza.
Untuk menukar integer yang tidak ditandatangani kepada integer yang ditandatangani, anda boleh menggunakan penukaran jenis mudah. Susun atur memori bagi integer 16-bit yang tidak ditandatangani (uint16) dan integer 16-bit yang ditandatangani (int16) adalah sama. Oleh itu, anda boleh melakukan penukaran berikut:
<code class="go">a := binary.LittleEndian.Uint16(sampleA) a2 := int16(a)</code>
Penukaran ini tidak mengubah perwakilan memori, hanya jenis.
Menukar integer tidak ditandatangani kepada nombor terapung lebih terlibat sedikit. Pakej matematik Go menyediakan fungsi untuk menukar antara integer dan apungan yang tidak ditandatangani, seperti math.Float32frombits() dan math.Float64frombits().
<code class="go">a := binary.LittleEndian.Uint64(sampleA) a2 := math.Float64frombits(a)</code>
Penukaran ini tidak memanipulasi nilai memori sebaliknya "melihat"nya sebagai jenis yang berbeza menggunakan pakej yang tidak selamat.
Pakej binari juga menyediakan fungsi Read() dan Write(), yang melaksanakannya penukaran di bawah tudung. Anda boleh menggunakan fungsi ini untuk menukar antara jenis angka yang berbeza dan tatasusunan bait.
<code class="go">var pi float64 buf := bytes.NewReader(b) err := binary.Read(buf, binary.LittleEndian, &pi) // or a := binary.LittleEndian.Uint64(b) a2 := math.Float64frombits(a)</code>
Dalam contoh ini, tatasusunan bait input mengandungi nilai pi dalam format little-endian. Fungsi Read() menukar tatasusunan bait kepada nilai float64, manakala Uint64() dan Float64frombits() melakukan penukaran secara manual.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Jenis Numerik kepada []bait dan Kembali dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!