Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menukar Rentetan Heksadesimal kepada IEEE-754 Floats dalam Go?

Bagaimana untuk Menukar Rentetan Heksadesimal kepada IEEE-754 Floats dalam Go?

DDD
Lepaskan: 2024-11-24 14:58:11
asal
764 orang telah melayarinya

How to Convert Hexadecimal Strings to IEEE-754 Floats in Go?

Menukar Perenambelasan kepada IEEE-754 Float

Untuk menukar rentetan perenambelasan seperti "0xC40C5253" kepada nilai floatstr IEEE-754. Fungsi ParseFloat tidak mencukupi. Artikel ini meneroka kaedah alternatif untuk mencapai penukaran ini.

Pertama, tentukan panjang bit input. Dalam kes ini, dengan 8 digit hex, kemungkinan apungan 32-bit (walaupun pengesahan daripada pengguna disyorkan).

Menggunakan strconv.ParseUint dan Penukaran Tidak Selamat:

  • Gunakan strconv.ParseUint() untuk menghuraikan rentetan heks sebagai Integer tidak bertanda 32-bit (uint32).
  • Tukar hasil uint64 kepada uint32 untuk memadankan saiz float32.
  • Gunakan pakej tidak selamat untuk mentafsir bait uint32 sebagai bait a float32.

Kod:

s := "C40C5253"
n, err := strconv.ParseUint(s, 16, 32)
if err != nil {
    panic(err)
}
n2 := uint32(n)
f := *(*float32)(unsafe.Pointer(&n2))
Salin selepas log masuk

Alternatif Menggunakan matematik.Float32daripada:

Pakej matematik menyediakan fungsi terbina dalam Float32frombits() yang secara langsung menukar uint32 kepada float32.

Kod:

f := math.Float32frombits(n2)
Salin selepas log masuk

Penggunaan:

Dengan mana-mana kaedah, anda kini boleh mengakses nilai apungan yang disimpan dalam f. Contohnya:

fmt.Println(f) // Output: -561.2863
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan Heksadesimal kepada IEEE-754 Floats 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan