您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何将十六进制转换为浮点数

如何将十六进制转换为浮点数

首先,需要说明输入的位长。由于十六进制表示形式有4个字节(8个十六进制数字),因此很可能是a float32(需要询问者澄清)。

您可以将十六进制表示形式的字节解析为uint32usingstrconv.ParseUint()ParseUint()总是返回uint64占用8个字节的内存,因此您必须将其转换为占用uint324个字节的内存,如下所示float32

s := "C40C5253"
n, err := strconv.ParseUint(s, 16, 32)
if err != nil {
    panic(err)
}
n2 = uint32(n)

现在您有了字节,但是它们存储在类型的变量中uint32,因此被解释为整数的字节。而且您想将它们解释为IEEE-754浮点数的字节,可以使用该unsafe包来做到这一点:

f := *(*float32)(unsafe.Pointer(&n2))
fmt.Println(f)

输出(在Go Playground上尝试):

-561.2863

正如JimB所指出的那样,对于第二部分(转换uint32float32),math程序包具有内置功能math.Float32frombits(),该功能可以在后台执行此操作:

f := math.Float32frombits(n2)
其他 2022/1/1 18:14:20 有629人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶