如何将[] uint8转换为字符串

时间:2020-05-23 15:09:10

标签: go

我正在Go中观察程序的日志,并且在输出中我看到了:

[]uint8=[18 32 96 38 15 212 226 233 58 14 183 212 80 4 175 97 28 235 76 154 244 210 200 18 131 241 31 86 179 109 228 190 78 72])

现在,我希望能够将其转换为可以理解其含义的形式。这应该是表示为[]uint8的字符串内容。

但是,当我按照此链接here中的建议在该值上调用string方法时,就会得到一个混乱的输出。

Go Playground link here

我可能做错了什么以及如何进行这种转换?

2 个答案:

答案 0 :(得分:4)

转换s := string(stuff)很好,但是通常您希望stuff包含实际的可打印字符序列。就您而言,(大多数情况下)没有。

请确保详细阅读Strings, bytes, runes and characters in Go


修改示例以打印具有ASCII字母映射的字节值:

package main

import (
    "fmt"
)

func main() {
    stuff := []byte{97, 98, 99, 100}
    s := string(stuff)
    fmt.Println(s)
}

Prints "abcd"

答案 1 :(得分:1)

实际上,您在GO Playground中提到的代码还可以,并且没有错。

{{1}}和此处的某些元素无法打印字符。因此,我认为您应该了解ASCII表。这样您就不会对输出感到困惑。

访问此https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html以获得ASCII表的想法

相关问题