16b5,而 fmt.Printf ("%x", "ᚵ") ~> e19ab5?-6ren"> 16b5,而 fmt.Printf ("%x", "ᚵ") ~> e19ab5?-package main import ( "fmt" ) func main() { fmt.Printf("%c, %x, %x", 'ᚵ', 'ᚵ', "ᚵ") } 输出: ᚵ,-6ren">
gpt4 book ai didi

go - 为什么 fmt.Printf ("%x", 'ᚵ' ) ~> 16b5,而 fmt.Printf ("%x", "ᚵ") ~> e19ab5?

转载 作者:IT王子 更新时间:2023-10-29 01:35:04 25 4
gpt4 key购买 nike

package main

import (
"fmt"
)

func main() {
fmt.Printf("%c, %x, %x", 'ᚵ', 'ᚵ', "ᚵ")
}

输出:

ᚵ, 16b5, e19ab5

https://play.golang.org/p/_Bs7JcdOfO

最佳答案

因为每个人做的事情都不一样。两者都将参数格式化为十六进制数,但各自对参数的看法不同。

fmt.Printf("%x", 'ᚵ') 以 32 位整数 (int32) 形式打印单个 unicode 字符( rune ,如果你愿意的话)。

fmt.Printf("%x", "ᚵ") 将字符串(字符串的各个字节)打印为 8 位整数 (uint8)。当使用 utf-8 编码时, rune 被编码为三个字节。这就是为什么有六个十六进制数字(每个字节两个)的原因。

要详细研究字符串的打印,请从文件 fmt/print.go 中的函数 fmtString 开始。

func (p *pp) fmtString(v string, verb rune) {

关于go - 为什么 fmt.Printf ("%x", 'ᚵ' ) ~> 16b5,而 fmt.Printf ("%x", "ᚵ") ~> e19ab5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47422869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com