我有以下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类型,它将保留rune
值的最低16位。这里没有编码或序列化。
当您将值序列化为一系列字节时,little endian或Big endian会起作用,但此处不会发生这种情况。
请参阅以下示例:
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 - 在 rune 上调用uint16是大端还是小端?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48440454/