将长整数转换为 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 上的示例。
我正在尝试将我在 Java 中看到的内容重写到 Go。
在 Java 中,该示例使用 (char)1573346;
的类型转换将 int 1573346
转换为 char Ǣ
打印新值的 int 后,我得到 482;
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 上的示例。