将长整数转换为 char/rune

Converting a long integer into a char/rune

我正在尝试将我在 Java 中看到的内容重写到 Go。

在 Java 中,该示例使用 (char)1573346; 的类型转换将 int 1573346 转换为 char Ǣ 打印新值的 int 后,我​​得到 482;

的十进制 ascii
int num = 1573346;
char ascii = (char)num; // Ǣ
int asciiNum = (int)ascii; // 482

我找不到在 Go 中做同样事情的方法。

https://play.golang.org/p/1eVgDANNTUT

package main

import "fmt"

func main() {
    var num = int(1573346)
    var ascii = uint16(num)
    var asciiNum = int(ascii)

    fmt.Printf("%d %c %d", num, ascii, asciiNum)
}
1573346 Ǣ 482
Program exited.

Java的char类型是2个字节或16位。当您在 Java 中执行 (char)num 时,将“trim” num 变为 16 位,保留最低的 16 位。

要在 Go 中做同样的事情,首先将数字转换为 uint16,然后转换为 rune(并可选择转换为 string 以进行打印)。

请注意,在 Go 中,您无法将常量值 1573346 转换为 uint16,因为该数字无法用 uint16 类型的值表示。所以你首先要把它赋值给一个变量,然后转换变量的值(这是允许的):

x := 1573346
fmt.Println(string(rune(uint16(x))))

输出:

Ǣ

等同于:

fmt.Println(string(rune(482)))

尝试 Go Playground 上的示例。