golang - 将[] byte转换为字符串错误

lin*_*how -1 types sha1 go

[]字节到字符串错误.string([] byte [:n])也是错误的.顺便说一下,例如,sha1值为filename的字符串.它需要utf-8?或其他什么?谢谢.

rus*_*tyx 32

在 Go 中转换[]byte为的最简单方法string

myString := string(myBytes)
Run Code Online (Sandbox Code Playgroud)

注意:要将“ sha1 值转换为字符串”,如您所问,需要先对其进行编码,因为散列是二进制的。SHA 散列的传统编码是十六进制 ( import "encoding/hex"):

myString := hex.EncodeToString(sha1bytes)
Run Code Online (Sandbox Code Playgroud)


小智 11

我用要转换的最简单的方法bytestring就是:

myString := string(myBytes[:])

  • 为什么是`:`?这个答案和“myString := string(myBytes)”有什么区别? (22认同)
  • 需要 `:` 是因为字节*数组*不能直接转换为字符串,而切片可以。假设我们有 `var b [64]byte` 。`string(b)` 将失败,而 `string(b[:])` 将起作用。 (21认同)

Fra*_*nin 8

在 Go 中,您通过string(bytes)在示例中执行此操作将字节数组 (utf-8) 转换为字符串,它应该string(byte[:n])假设byte是一个字节片。


ala*_*rcl 5

我不确定我是否正确理解问题,但可能是:

var ab20 [20]byte = sha1.Sum([]byte("filename.txt"))
var sx16 string = fmt.Sprintf("%x", ab20)
fmt.Print(sx16)
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/haChjjsH0-