猿问

在 Go 中以十六进制打印字符串和字符

为什么十六进制格式的西里尔字符串与十六进制格式的西里尔字符不同?


str  := "Э"

fmt.Printf("%x\n", str)

//result d0ad

    

str  := 'Э'

fmt.Printf("%x\n", str)

//result 42d


波斯汪
浏览 373回答 1
1回答

哔哔one

打印 a 的十六进制表示string打印其字节的十六进制表示,打印 a 的十六进制表示打印rune它作为别名的数字的十六进制表示(runeis an alias to int32)。Go 中的sstring保存文本的UTF-8编码字节序列。在 UTF-8 表示中,数字代码 > 127 的字符(符文)具有多字节表示。在 UTF-8 中具有rune Э多字节表示(即[208, 173]),它与 32 位整数的多字节表示不同1069 = 0x42d。整数在内存中使用二进制补码表示。推荐博文:Go 中的字符串、字节、符文和字符
随时随地看视频慕课网APP

相关分类

Go
我要回答