自从我们在大学开始使用Java以来,我就对Java还是比较陌生。到目前为止,我还没有遇到很多问题,但是我们的最新任务不会让我彻夜难眠:我们应该编写一个简单的程序,要求用户使用扫描仪在控制台中输入Unicode字符。然后,程序应将所述字符编码为其十进制和十六进制值。 这是我想出的:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter a Unicode character:");
char c = scan.next().charAt(0);
scan.close();
System.out.println((int)c);
System.out.printf("%h",c);
}
再次,我还是Java的新手,所以对于任何初学者的错误我深表歉意。我的问题是,直到到达十进制值超过255的字符(在我的情况下为“ÿ”)为止,编码器才能正常工作。如果我输入任何其他字符,则得到63的十进制数和3f的十六进制数
https://imgur.com/a/HwOPIDl
我对我能获得的所有帮助感到高兴!
答案 0 :(得分:1)
如果只是尝试将其打印出来,则可以使用System.out.printf()。这对我有用:
System.out.printf("%#08x %d", (int)c, (int)c);
在%#08x
中:
#
自动在'0x'前缀上打掌
08
的意思是8个字符的宽度,必要时以前导零开头
x
用于十六进制值
示例:
你
0x004f60 20320
答案 1 :(得分:0)
如果要对数字进行其他处理,可以将其转换为适当的数据类型,然后进行打印。
int int_val = (int)c;
String hex_val = Integer.toHexString(int_val);
}