我今天才开始围棋,所以这可能很明显,但我找不到任何关于它的东西。
是什么var x uint64 = 0x12345678; y := string(x)给予y?
我知道var x uint8 = 65; y := string(x)会给出y字节 65,字符A和常识会建议(因为类型大于uint8允许转换为字符串的类型),它们将简单地打包到本机字节顺序(即小端)并分配给变量。
情况似乎并非如此:
hex.EncodeToString([]byte(y)) ==> "efbfbd"
第一个想法说这是一个地址,由于一些奇怪的空终止符,最后一个字节被遗漏了,但是如果我分配两个x和y变量具有两个不同的值并将它们打印出来,我会得到相同的结果。
var x, x2 uint64 = 0x10000000, 0x20000000
y, y2 := string(x), string(x2)
fmt.Println(hex.EncodeToString([]byte(y))) // "efbfbd"
fmt.Println(hex.EncodeToString([]byte(y2))) // "efbfbd"
令人抓狂的是,我在任何地方都找不到 string 类型的实现,尽管我可能看起来还不够努力。
动漫人物
相关分类