在Java中将字符从扫描仪转换为dec和hex

时间:2018-11-12 23:26:31

标签: java eclipse unicode char java.util.scanner

自从我们在大学开始使用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

我对我能获得的所有帮助感到高兴!

2 个答案:

答案 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);
}