golang 相当于 PHP 的 unpack(“f”, $str) 吗?
短信预约 -IT技能 免费直播动态提醒
你在学习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) 吗?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341