在符文上调用 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