登录
首页 >  Golang >  Go问答

转换Go中字符串数组为字节片段

来源:stackoverflow

时间:2024-03-21 17:36:33 452浏览 收藏

在 Go 语言中,可以使用多种方法将字符串数组转换为字节片段。最直接的方法是使用 []byte 字面量创建字节数组,也可以使用 conversion 将每个字符串转换为 []byte。如果目标是获取连接字符串的字节数组,则可以使用 strings.join() 函数。对于动态初始化,可以使用 make() 函数创建字节片段。具体方法取决于用例和所需的灵活性。

问题内容

给定一个仅包含单个字符的字符串数组,例如:

ex := [...]string{"a","o",".",".","2",".",".","9"}

有没有办法获取具有相同内容但使用字节而不是字符串的字节数组?


正确答案


使用 conversion 将每个 string 转换为 []byte

ex := [...]string{"a", "o", ".", ".", "2", ".", ".", "9"}
var ey [len(ex)][]byte
for i := range ex {
    ey[i] = []byte(ex[i])
}

如果您的目的是获取连接字符串的字节数组,请使用此代码。此代码仅在字符串为单个 ascii 字符时才有效。

ex := [...]string{"a", "o", ".", ".", "2", ".", ".", "9"}
var ey [len(ex)]byte
for i := range ex {
    ey[i] = ex[i][0]
}

使用以下表达式来获取 joined 个字符串的字节片段:[]byte(strings.join(ex[:], ""))

我不知道你这样做的背景,但我的猜测是使用 slicearray 更合适:

ex := []string{"a", "o", ".", ".", "2", ".", ".", "9"}
ey := make([][]byte, len(ex))
for i := range ex {
    ey[i] = []byte(ex[i])
}

..

s := []byte(strings.join(ex, ""))

根据这是否是代码生成管道的一部分,您可以通过多种方式执行此操作。

直接:

bs := [...]byte{'a', 'o', '.', '.', '2', '.', '.', '9'}

或间接:

ex := [...]string{"a", "o", ".", ".", "2", ".", ".", "9"}

bs := [...]byte{
    ex[0][0],
    ex[1][0],
    ex[2][0],
    ex[3][0],
    ex[4][0],
    ex[5][0],
    ex[6][0],
    ex[7][0],
} // type [8]int8  i.e. [8]byte

https://play.golang.org/p/iMEjFpCKAaW

根据您的用例,这些方法可能过于严格。对于动态初始化方法,请参阅此处的其他答案。

终于介绍完啦!小伙伴们,这篇关于《转换Go中字符串数组为字节片段》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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