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
DDDasal
2024-11-24 14:58:11721semak imbas

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))

Alternatif Menggunakan matematik.Float32daripada:

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

Kod:

f := math.Float32frombits(n2)

Penggunaan:

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

fmt.Println(f) // Output: -561.2863

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!

Kenyataan:
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 sebelumnya:Gandingan dan KesepaduanArtikel seterusnya:Gandingan dan Kesepaduan