如何将单个字节转换为 []byte

How do I convert a single byte to a []byte

如何在 Go 中将单个字节转换为字节片?

我已经尝试了几种不同的方法,但是 none 其中的方法有效。我不断收到一条错误消息:cannot convert charBytes[i] (type byte) to type []byte.

到目前为止,我找到的唯一可行的方法是从字符串中获取一个字符,将其转换为字符串,然后将其重新转换为字节数组。

characters := "some text"    
for i := 0; len(characters); i++ {    
    var b []byte = []byte(string(characters[i]))    
    fmt.Println(b)
}

Spec: Conversions 不允许将 byte 转换为 []byte。但是,您可以创建一个包含该单个字节的切片:

var value byte

data := []byte{value}

另请注意,在您的情况下,要获得包含第 ith 个字节的切片,只需使用 slice expression:

characters[i:i+1]

另外不要忘记索引 string 索引它的 UTF-8 字节序列,而不是 string 的符文,如果 string包含编码为多个字节(UTF-8)的符文。

如果您确实想遍历符文而不是字节,您可以使用 for .. range,或者您可以先将输入 string 转换为 []rune

这似乎是您真正想要做的:

    characters := "some text"
    for i := 0; i < len(characters); i++ {
        b := characters[i]
        fmt.Println(b)
    }

您的代码令人困惑(并且无法编译),但您似乎想要遍历字符串,并且对于您当前所在的元素,将字符转换为字节并打印出来。如果是这样,您不需要(或不想)将任何内容转换为 []byte.


如果您不想逐字节迭代而是逐字符迭代,请使用 range 循环。它遍历 runes:

    characters := "søme spécial text"
    for _, r := range characters {
        char := string(r)
        b := []byte(char)
        fmt.Println(char, b)
    }