我想使用golang将十六进制转换为float,但是我没有得到正确的结果。
PHP具有解压缩功能,可以获得正确的结果。
i := "CDC1933E"
b, _ := hex.DecodeString(i)
buf := bytes.NewReader(b)
var f float32
err := binary.Read(buf, binary.BigEndian, &f)
fmt.Println(f)
var_dump(unpack("f",hex2bin("CDC1933E")));
正确的结果应该是0.28858796。
答案 0 :(得分:0)
以下内容将为您提供预期的结果(playground):
i := "CDC1933E"
b, _ := hex.DecodeString(i)
buf := bytes.NewReader(b)
var ui uint32
err := binary.Read(buf, binary.LittleEndian, &ui)
if err != nil {
panic(err)
}
f := math.Float32frombits(ui)
fmt.Println(f)
您会注意到数据是采用低端字节序编码的(Python默认为主机系统的字节顺序;假设您正在运行的是低端字节序的Intel x86 / AMD64)。