我是新手,所以关于字节概念的混淆很多。
在浏览一些代码时,我遇到了一些像
这样的东西[]byte("\xd2\xfd\x88g\xd5\r-\xfe")
是六进制还是字节格式?
上面的一些字符如g,r-,e
表示什么?
如何在日志中打印?
答案 0 :(得分:0)
[]byte("\xd2\xfd\x88g\xd5\r-\xfe")
是一个解释后的字符串文字,转换为[]byte
类型,byte
切片。在这里它被分成字节值:
[\xd2, \xfd, \x88, g, \xd5, \r, -, \xfe]
或表示为十六进制字节
[d2, fd, 88, 67, d5, 0d, 2d, fe]
记录值的一种方法,
package main
import "log"
func main() {
b := []byte("\xd2\xfd\x88g\xd5\r-\xfe")
log.Printf("%q\n", b)
}
游乐场:https://play.golang.org/p/BIh_EuvoxU-
输出:
2009/11/10 23:00:00 "\xd2\xfd\x88g\xd5\r-\xfe"
字符串文字表示从中获取的字符串常量 连接一系列字符。有两种形式:原始 字符串文字和解释的字符串文字。
原始字符串文字是后引号之间的字符序列,如
foo
。在引号内,除反向引号外,任何字符都可能出现。 原始字符串文字的值是由字符串组成的字符串 未解释的(隐式UTF-8编码)字符之间 报价;特别是,反斜杠没有特殊含义 字符串可能包含换行符。里面有回车符('\ r') 原始字符串文字将从原始字符串值中丢弃。解释的字符串文字是double之间的字符序列 引号,如“bar”中所示。在引号内,可能会出现任何字符 除了换行符和未转义的双引号。引号之间的文字 形成文字的值,反斜杠转义被解释为 他们是符文文字(除非“非法”和“合法”), 有相同的限制。三位八进制(\ nnn)和两位数 十六进制(\ xnn)转义表示结果的单个字节 串;所有其他转义表示(可能是多字节)UTF-8 单个字符的编码。因此在字符串文字内\ 377 和\ xFF表示值为0xFF = 255的单字节,而ÿ,\ u00FF, \ U000000FF和\ xc3 \ xbf表示UTF-8的两个字节0xc3 0xbf 编码字符U + 00FF。
反斜杠后,某些单字符转义表示特殊 值:
\a U+0007 alert or bell \b U+0008 backspace \f U+000C form feed \n U+000A line feed or newline \r U+000D carriage return \t U+0009 horizontal tab \v U+000b vertical tab \\ U+005c backslash \' U+0027 single quote (valid escape only within rune literals) \" U+0022 double quote (valid escape only within string literals)