如何将单个字节转换为 []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
循环。它遍历 rune
s:
characters := "søme spécial text"
for _, r := range characters {
char := string(r)
b := []byte(char)
fmt.Println(char, b)
}
如何在 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
循环。它遍历 rune
s:
characters := "søme spécial text"
for _, r := range characters {
char := string(r)
b := []byte(char)
fmt.Println(char, b)
}