如何在Go中将字节数组转换为字符串

问题描述 投票:-3回答:5

[]byte to string引发错误。 string([]byte[:n])也犯了一个错误。顺便说一下,例如,sha1值为filename的字符串。它是否需要utf-8或任何其他编码设置?谢谢!

go types sha1
5个回答
10
投票

我用来将byte转换为string的最简单方法是:

myString := string(myBytes[:])


3
投票

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


3
投票

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

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

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


0
投票

首先,你得到所有这些否定评论,因为你没有提供任何代码。第二,没有一个很好的例子。这就是我要做的

var Buf bytes.Buffer
Buf.Write([]byte)
myString := Buf.String()
Buf.Reset() // Reset the buffer to reuse later

还是更好

myString := string(someByteArray[:n])

看到here也看到@ JimB的评论

如果您帮助定位您的程序,请说明您尝试过的内容,预期结果和错误。


0
投票

我们可以猜测您的代码有什么问题,因为没有提供有意义的示例。但首先我看到string([]byte[:n])根本无效。 []byte[:n]不是有效的表达式,因为没有为数组分配内存。由于字节数组可以直接转换为字符串,我假设您只有语法错误。

最短的有效期是fmt.Println(string([]byte{'g', 'o'}))

© www.soinside.com 2019 - 2024. All rights reserved.