登录
首页 >  Golang >  Go问答

golang 相当于 PHP 的 unpack(“f”, $str) 吗?

来源:stackoverflow

时间:2024-03-30 12:06:32 267浏览 收藏

你在学习Golang相关的知识吗?本文《golang 相当于 PHP 的 unpack(“f”, $str) 吗?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我想使用golang将十六进制转换为浮点数,但我没有得到正确的结果。

php有一个解包函数,可以得到正确的结果。

go语言代码

i := "cdc1933e"
b, _ := hex.decodestring(i)
buf := bytes.newreader(b)
var f float32
err := binary.read(buf, binary.bigendian, &f)
fmt.println(f)

php 代码

var_dump(unpack("f",hex2bin("CDC1933E")));

正确的结果应该是0.28858796。


解决方案


以下内容将为您提供您期望的结果(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)。

理论要掌握,实操不能落!以上关于《golang 相当于 PHP 的 unpack(“f”, $str) 吗?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>