📌  相关文章
📜  golang string to bytes - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:15:22.233000             🧑  作者: Mango

Golang string to bytes

在 Golang 中,string 和 []byte 是不同的类型,string 类型是只读的,而 []byte 类型是可以被修改的。因此,在某些情况下,我们需要将 string 转换成 []byte 类型进行修改。

1. Golang string 转换成 []byte

我们可以将 string 转换成 []byte 类型,使用内置函数 []byte(str string) []byte,示例代码如下:

str := "Hello, world!"
bytes := []byte(str)
2. Golang []byte 转换成 string

同样地,我们也可以将 []byte 转换成 string 类型,使用内置函数 string(b []byte) string,示例代码如下:

bytes := []byte{72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33} // "Hello, world!" 的字节数组
str := string(bytes)
3. 字符串编码转换

在处理字符串时,有时需要将字符串从一种编码转换为另一种编码。Golang 中提供了内置的函数,如 strconv.Atoi()strconv.ParseBool() 等,但是这些函数仅支持基本类型的转换。

如果需要转换字符串的编码,可以使用 golang.org/x/text/encoding 包。该包提供了很多编码的实现,支持 Unicode 编码、UTF-8、GB2312、GBK、Big5 等多种编码转换。

以下是将 GB2312 编码的字符串转换为 UTF-8 编码的示例代码:

import (
    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)

// 将 GB2312 编码的字符串转换为 UTF-8 编码
func ConvertGB2312ToUTF8(str string) (string, error) {
    reader := transform.NewReader(strings.NewReader(str), simplifiedchinese.GB18030.NewDecoder())
    result, err := ioutil.ReadAll(reader)
    if err != nil {
        return "", err
    }
    return string(result), nil
}
4. 结论

在 Golang 中,我们可以很方便地将 string 转换成 []byte,也可以将 []byte 转换成 string。如果需要进行字符串编码转换,可以使用 golang.org/x/text/encoding 包提供的函数实现。