go - Golang无法使用math.Float64frombits将[] byte (“1575455669.4”)转换为float64

标签 go encoding endianness

我有以下代码:

x := []byte("1575455669.4")
bits := binary.LittleEndian.Uint64(x)
f := math.Float64frombits(bits)

在调用fmt.Println(f)时,我期望1.5754556694e+09。但是相反,我最终得到1.451098468672448e-47
当我尝试通过strconv.ParseFloat(string(x), 64)进行相同的转换时,我得到了正确的结果。我在这里做错了什么?

最佳答案

这:

x := []byte("1575455669.4")

将为您提供"1575455669.4"字符串的(UTF-8编码)字节。这与使用IEEE 754标准的浮点数1575455669.4的内存表示形式无关。但是接下来要做的只是假设:
bits := binary.LittleEndian.Uint64(x)
f := math.Float64frombits(bits)

您有一个以10为基数的字符串表示形式的数字,必须使用strconv.ParseFloat(string(x), 64)对其进行解析并将其作为float64

关于go - Golang无法使用math.Float64frombits将[] byte (“1575455669.4”)转换为float64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59213049/

相关文章:

go - 无法使用默认服务帐户和谷歌云库从谷歌 Kubernetes 引擎访问谷歌云存储

指针与参数和返回值中的值

python - 写代码时Python字符串中的特殊字符

rest - golang 的 Shim 接口(interface)中的补丁函数

go - Spdy 流接收器正在接收 nil 对象

PHP (ZLIB) 解压缩 C (ZLIB) 压缩数组会返回乱码

java - Apache olingo 基本身份验证编码问题

c++ - 从 char* 缓冲区读取 int32_t 的惯用 cpp14 方法是什么?

c++ - 根据模板参数大小在成员函数中使用不同的返回类型

在 c 中将 64 位 int 从主机转换为网络顺序,我只得到零