Masalah:
Menukar rentetan heks (cth., "0xC40") kepadaC5253 nilai titik terapung menggunakan penukaran IEEE-754 mempunyai terbukti mencabar dengan fungsi strconv.ParseFloat. Adakah terdapat pendekatan alternatif?
Jawapan:
Untuk menukar rentetan heks kepada nilai terapung dengan berkesan, pertimbangkan langkah berikut:
Berikut ialah contoh coretan kod yang menunjukkan langkah-langkah ini:
import ( "fmt" "strconv" "unsafe" ) func main() { s := "C40C5253" n, err := strconv.ParseUint(s, 16, 32) if err != nil { panic(err) } n2 := uint32(n) f := *(*float32)(unsafe.Pointer(&n2)) fmt.Println(f) }
Nota:
Sebagai alternatif, pakej matematik menyediakan fungsi matematik terbina dalam.Float32frombits() untuk menukar nilai uint32 kepada float32, yang boleh digunakan dan bukannya pakej yang tidak selamat:
f := math.Float32frombits(n2)
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Hex dengan Cekap kepada Nilai Titik Terapung IEEE-754 dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!