在 Go 中将字节转换为字符串
Convert a byte to a string in Go
我正在尝试做这样的事情:
bytes := [4]byte{1,2,3,4}
str := convert(bytes)
//str == "1,2,3,4"
我搜索了很多,真的不知道该怎么做。
我知道这行不通:
str = string(bytes[:])
如果您不受确切表示的约束,那么您可以使用 fmt.Sprint
:
fmt.Sprint(bytes) // [1 2 3 4]
另一方面,如果您想要精确的逗号样式,则必须使用循环和 strconv.Itoa
.
自行构建它
这不是最有效的实现方式,但您可以简单地写成:
func convert( b []byte ) string {
s := make([]string,len(b))
for i := range b {
s[i] = strconv.Itoa(int(b[i]))
}
return strings.Join(s,",")
}
呼叫者:
bytes := [4]byte{1,2,3,4}
str := convert(bytes[:])
类似于 inf 的建议,但允许使用逗号:
fmt.Sprintf("%d,%d,%d,%d", bytes[0], bytes[1], bytes[2], bytes[3])
hex.EncodeToString(input)
可能适合你。
使用 strings.Builder
将是最有效的方法..
package main
import (
"fmt"
"strings"
)
func convert( bytes []byte) string {
var str strings.Builder
for _, b := range bytes {
fmt.Fprintf(&str, "%d,", int(b))
}
return str.String()[:str.Len() - 1]
}
func main(){
s := [4]byte{1,2,3,4}
fmt.Println(convert(s[:]))
}
=> 1,2,3,4
func convert( b []byte ) string {
s := make([]string,len(b))
for i := range b {
s[i] = string(b[i])
}
return strings.Join(s,",")
}
我正在尝试做这样的事情:
bytes := [4]byte{1,2,3,4}
str := convert(bytes)
//str == "1,2,3,4"
我搜索了很多,真的不知道该怎么做。
我知道这行不通:
str = string(bytes[:])
如果您不受确切表示的约束,那么您可以使用 fmt.Sprint
:
fmt.Sprint(bytes) // [1 2 3 4]
另一方面,如果您想要精确的逗号样式,则必须使用循环和 strconv.Itoa
.
这不是最有效的实现方式,但您可以简单地写成:
func convert( b []byte ) string {
s := make([]string,len(b))
for i := range b {
s[i] = strconv.Itoa(int(b[i]))
}
return strings.Join(s,",")
}
呼叫者:
bytes := [4]byte{1,2,3,4}
str := convert(bytes[:])
类似于 inf 的建议,但允许使用逗号:
fmt.Sprintf("%d,%d,%d,%d", bytes[0], bytes[1], bytes[2], bytes[3])
hex.EncodeToString(input)
可能适合你。
使用 strings.Builder
将是最有效的方法..
package main
import (
"fmt"
"strings"
)
func convert( bytes []byte) string {
var str strings.Builder
for _, b := range bytes {
fmt.Fprintf(&str, "%d,", int(b))
}
return str.String()[:str.Len() - 1]
}
func main(){
s := [4]byte{1,2,3,4}
fmt.Println(convert(s[:]))
}
=> 1,2,3,4
func convert( b []byte ) string {
s := make([]string,len(b))
for i := range b {
s[i] = string(b[i])
}
return strings.Join(s,",")
}