Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh menukar tatasusunan bait kepada integer dan terapung yang ditandatangani dalam Go?

Bagaimanakah saya boleh menukar tatasusunan bait kepada integer dan terapung yang ditandatangani dalam Go?

Patricia Arquette
Lepaskan: 2024-10-29 07:53:30
asal
876 orang telah melayarinya

How can I convert byte arrays to signed integers and floats in Go?

Menukar Tatasusunan Byte kepada Integer Bertanda dan Terapung dalam Go

Dalam Go, pakej binari menawarkan fungsi untuk menukar integer yang tidak ditandatangani daripada []bait tatasusunan, seperti binari.LittleEndian.Uint16() dan binari.BigEndian.Uint32(). Walau bagaimanapun, tiada persamaan langsung untuk integer atau apungan yang ditandatangani.

Sebab Ketiadaan Fungsi Penukaran Integer Ditandatangani

Ketiadaan fungsi penukaran integer yang ditandatangani adalah disebabkan terutamanya kepada fakta bahawa mentafsir perwakilan binari sebagai nilai yang ditandatangani atau tidak ditandatangani adalah masalah logik pengaturcaraan. Tatasusunan []bait itu sendiri mengandungi hanya data binari mentah, yang boleh ditafsirkan sebagai sama ada ditandatangani atau tidak ditandatangani bergantung pada keperluan aplikasi.

Cara Menukar kepada Integer Bertandatangan

Untuk menukar nilai integer yang tidak ditandatangani kepada integer yang ditandatangani, penukaran jenis mudah boleh digunakan. Memandangkan susun atur memori integer yang tidak ditandatangani dan ditandatangani dengan saiz yang sama adalah sama, menukar a daripada uint16 kepada int16 menggunakan int16(a) akan mengekalkan perwakilan binari asal sambil memberikan tanda yang sesuai.

Menukar kepada Terapung

Menukar daripada integer tidak bertanda kepada terapung memerlukan lebih sedikit penglibatan. Pakej matematik menyediakan fungsi untuk tujuan ini: math.Float32frombits() dan math.Float64frombits(). Sebaliknya, math.Float32bits() dan math.Float64bits() boleh digunakan untuk mendapatkan perwakilan integer yang tidak ditandatangani bagi nilai float.

Penggunaan Binary.Read() dan Binary.Write()

Pakej binari juga termasuk fungsi Baca() dan Tulis() yang boleh melaksanakan penukaran ini dengan lebih cekap di bawah hud. Fungsi ini membolehkan anda membaca terus ke dalam nilai yang ditaip tanpa memerlukan penukaran jenis perantaraan.

Contoh Menggunakan Binary.Read() untuk Penukaran Terapung

Pertimbangkan perkara berikut contoh:

<code class="go">b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}

var pi float64
buf := bytes.NewReader(b)
err := binary.Read(buf, binary.LittleEndian, &pi)
if err != nil {
    fmt.Println("binary.Read failed:", err)
}

fmt.Println(pi) // Output: 3.141592653589793</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar tatasusunan bait kepada integer dan terapung yang ditandatangani dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan