我正在尝试重写我在java中看到的一些东西。在java中,该示例将int 1573346 到字符 Ǣ 使用类型转换 (char)1573346; 在打印完新值的int之后,我得到了ascii的十进制值 482; ```int num = 1573346;char ascii = (char)num; // Ǣint asciiNum = (int)ascii; // 482
1573346
Ǣ
(char)1573346;
482;
我在围棋里找不到同样的方法。
uajslkp61#
java 的 char 类型为2字节或16位。当你这么做的时候 (char)num 在java中,这将“修剪” num 到16位,保留最低的16位。要在go中执行相同的操作,请首先将数字转换为 uint16 例如,然后 rune (也可以选择 string 用于打印)。请注意,在go中不能转换常量值 1573346 至 uint16 因为数字不能用类型的值来表示 uint16 . 因此,首先必须将其赋给一个变量并转换变量的值(这是允许的):
char
(char)num
num
uint16
rune
string
x := 1573346 fmt.Println(string(rune(uint16(x))))
输出:
一样:
fmt.Println(string(rune(482)))
在运动场上试试这些例子。
t1rydlwq2#
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.
2条答案
按热度按时间uajslkp61#
java 的
char
类型为2字节或16位。当你这么做的时候(char)num
在java中,这将“修剪”num
到16位,保留最低的16位。要在go中执行相同的操作,请首先将数字转换为
uint16
例如,然后rune
(也可以选择string
用于打印)。请注意,在go中不能转换常量值
1573346
至uint16
因为数字不能用类型的值来表示uint16
. 因此,首先必须将其赋给一个变量并转换变量的值(这是允许的):输出:
一样:
在运动场上试试这些例子。
t1rydlwq2#
https://play.golang.org/p/1evgdanntut