我有以下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/

10-10 04:32