我正在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
方法时,就会得到一个混乱的输出。
我可能做错了什么以及如何进行这种转换?
答案 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)
}
答案 1 :(得分:1)
实际上,您在GO Playground中提到的代码还可以,并且没有错。
{{1}}和此处的某些元素无法打印字符。因此,我认为您应该了解ASCII表。这样您就不会对输出感到困惑。
访问此https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html以获得ASCII表的想法