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

时间:2016-11-16 12:59:18

标签: go types sha1

bool XmlReader::read(QIODevice* device) { QByteArray contents = device->readAll(); QBuffer buffer(&contents); device = &buffer;//you can also just use &buffer from here on out instead of overwriting the pointer QByteArray b = fileChecksum(device); device->reset(); /* ... further reads from device here */ } 字符串会引发错误。 []byte也会引发错误。 顺便说一下,例如,sha1值为filename的字符串。 它是否需要utf-8或任何其他编码设置? 谢谢!

7 个答案:

答案 0 :(得分:10)

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

myString := string(myBytes[:])

答案 1 :(得分: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-

答案 2 :(得分:2)

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

答案 3 :(得分: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的评论

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

myString := string(myBytes)

注意:要像您所要求的那样将“ sha1值转换为字符串”,由于哈希是二进制的,因此需要首先对其进行编码。 SHA哈希的传统编码为十六进制(import "encoding/hex"):

myString := hex.EncodeToString(sha1bytes)

答案 6 :(得分:0)

ToBe := [6]byte{65, 66, 67, 226, 130, 172}
s:=ToBe[:3]
// this will work
fmt.Printf("%s",string(s))
// this will not
fmt.Printf("%s",string(ToBe))

差异:ToBe是一个数组,而s是一个切片。