在 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,",")
}