首页 > 后端开发 > Golang > 正文

如何在 Go 中将数字类型转换为 []byte 并返回?

Mary-Kate Olsen
发布: 2024-10-30 21:42:03
原创
419 人浏览过

How to Convert Numeric Types to []byte and Back in Go?

将数字类型转换为 []byte 并返回

在 Go 中,您可以使用 Uint16() 和 Uint32() 方法将无符号整数转换为字节数组binary.BigEndian 和 binary.LittleEndian 类型。但是,您可能已经注意到缺少等效的 Int16() 或 Float32() 方法。

字节序和数字类型

字节序是指给定字节在内存中存储的顺序数字类型。 Go 的二进制包提供了在不同字节序之间进行转换的功能。

转换为有符号整数

要将无符号整数转换为有符号整数,可以使用简单的类型转换。无符号 16 位整数 (uint16) 和有符号 16 位整数 (int16) 的内存布局是相同的。因此,您可以执行以下转换:

<code class="go">a := binary.LittleEndian.Uint16(sampleA)
a2 := int16(a)</code>
登录后复制

此转换不会更改内存表示,仅更改类型。

转换为浮点数

转换无符号整数到浮点数的涉及稍微多一些。 Go 的 math 包提供了无符号整数和浮点数之间转换的函数,例如 math.Float32frombits() 和 math.Float64frombits()。

<code class="go">a := binary.LittleEndian.Uint64(sampleA)
a2 := math.Float64frombits(a)</code>
登录后复制

这种转换不会操作内存值,而是“查看”它使用 unsafe 包作为不同类型。

使用 binary.Read() 和 binary.Write()

二进制包还提供 Read() 和 Write() 函数,它们执行这些操作引擎盖下的转换。您可以使用这些函数在不同的数字类型和字节数组之间进行转换。

<code class="go">var pi float64
buf := bytes.NewReader(b)
err := binary.Read(buf, binary.LittleEndian, &pi)

// or

a := binary.LittleEndian.Uint64(b)
a2 := math.Float64frombits(a)</code>
登录后复制

在此示例中,输入字节数组包含小端格式的 pi 值。 Read() 函数将字节数组转换为 float64 值,而 Uint64() 和 Float64frombits() 手动执行转换。

以上是如何在 Go 中将数字类型转换为 []byte 并返回?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!