我有以下 Go 程序:
package main
import (
"fmt"
)
func main() {
r := rune(249)
x := uint16(r)
fmt.Println(x)
}
如果我有一个rune r
并调用uint16(r)
它,它将是大端还是小端编码?Go 默认为一个吗?还是这取决于我的硬件?
我有以下 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)
是类型转换,它将保留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