Преобразование символов из сканера в dec и hex в Java - PullRequest
0 голосов
/ 13 ноября 2018

Я относительно новичок в 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, что в моем случае будет "ÿ". Если я введу любой символ за этим, я получу dec 63 и гекс 3f
https://imgur.com/a/HwOPIDl

Я счастлив от всей помощи, которую я могу получить!

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы просто пытаетесь распечатать его, вы можете использовать System.out.printf ().Это сработало для меня:

System.out.printf("%#08x %d", (int)c, (int)c);

В %#08x:

# автоматически шлепается по префиксу '0x'

08 означает ширину 8 символов,с начальными нулями, если необходимо

x для шестнадцатеричного значения

пример :

你
0x004f60 20320
...