我运行此代码并获得输出,但为什么字节值为 E4B8AD 而 int 值为 20013。为什么第 2 列不等于第 5 列?包主import( "fmt")func main(){ str2 := "中文" fmt.Println("index int(rune) rune char bytes") for index, rune := range str2{ fmt.Printf("%-2d %d %U '%c' %X\n", index, rune, rune, rune, []byte(string(rune))) }}输出是:index int(rune) rune char bytes0 20013 U+4E2D '中' E4B8AD1 25991 U+6587 '文' E69687
1 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
字符的 Unicode 代码点不一定与给定字符编码中该字符的字节表示相同。
对于字符中
,代码点是U+4E2D
,但是各种字符编码中的字节表示是:
E4B8AD
(UTF-8)4E2D
(UTF-16)00004E2D
(UTF-32)
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消