在符文上调用 uint16 是大端还是小端?
calling uint16 on a rune is big or little endian?
我有以下 Go 程序:
package main
import (
"fmt"
)
func main() {
r := rune(249)
x := uint16(r)
fmt.Println(x)
}
如果我有一个 rune r
并在其上调用 uint16(r)
,它是大端编码还是小端编码? Go 是否默认为一个?还是这取决于我的硬件?
rune
类型是int32
的别名,表达式uint16(r)
是conversion类型,会保留[=]的低16位12=] 值。这里不涉及编码或序列化。
当您将值序列化为一系列字节时,小端或大端开始发挥作用,但这不会发生在这里。
看这个例子:
r := rune(0x0000fafa)
fmt.Printf("%x\n", uint16(r))
i := uint32(0xfffffafa)
r = rune(i)
fmt.Printf("%x\n", uint16(r))
输出(在 Go Playground 上尝试):
fafa
fafa
我有以下 Go 程序:
package main
import (
"fmt"
)
func main() {
r := rune(249)
x := uint16(r)
fmt.Println(x)
}
如果我有一个 rune r
并在其上调用 uint16(r)
,它是大端编码还是小端编码? Go 是否默认为一个?还是这取决于我的硬件?
rune
类型是int32
的别名,表达式uint16(r)
是conversion类型,会保留[=]的低16位12=] 值。这里不涉及编码或序列化。
当您将值序列化为一系列字节时,小端或大端开始发挥作用,但这不会发生在这里。
看这个例子:
r := rune(0x0000fafa)
fmt.Printf("%x\n", uint16(r))
i := uint32(0xfffffafa)
r = rune(i)
fmt.Printf("%x\n", uint16(r))
输出(在 Go Playground 上尝试):
fafa
fafa