Как преобразовать ASCII в шестнадцатеричные значения в Java - PullRequest
5 голосов
/ 26 апреля 2010

Как преобразовать ASCII в шестнадцатеричные значения в Java.

Например:

ASCII: 31 32 2E 30 31 33

Hex: 12.013

Ответы [ 2 ]

8 голосов
/ 26 апреля 2010

Вы не преобразовали ASCII в шестнадцатеричное значение. У вас было char значения в шестнадцатеричном формате, и вы хотели преобразовать его в String, как я интерпретирую ваш вопрос.

    String s = new String(new char[] {
        0x31, 0x32, 0x2E, 0x30, 0x31, 0x33
    });
    System.out.println(s); // prints "12.013"

Если, возможно, вам дана строка, и вы хотите напечатать ее char в шестнадцатеричном виде, то вот как это сделать:

    for (char ch : "12.013".toCharArray()) {
        System.out.print(Integer.toHexString(ch) + " ");
    } // prints "31 32 2e 30 31 33 "

Вы также можете использовать строку формата %H:

    for (char ch : "12.013".toCharArray()) {
        System.out.format("%H ", ch);
    } // prints "31 32 2E 30 31 33 "
4 голосов
/ 26 апреля 2010

Не совсем понятно, о чем вы спрашиваете, поскольку ваша "шестнадцатеричная" строка на самом деле является десятичной. Я полагаю, что вы пытаетесь взять ASCII-строку, представляющую значение типа double, и получить ее значение в форме типа double, и в этом случае использование Double.parseDouble должно быть достаточным для ваших нужд. Если вам нужно вывести шестнадцатеричную строку с двойным значением, вы можете использовать Double.toHexString . Обратите внимание, что вам нужно перехватывать NumberFormatException всякий раз, когда вы вызываете одну из функций разбора примитивного класса-оболочки.

byte[] ascii = {(byte)0x31, (byte)0x32, (byte)0x2E, (byte)0x30, (byte)0x31, (byte)0x33};
String decimalstr = new String(ascii,"US-ASCII");
double val = Double.parseDouble(decimalstr);
String hexstr = Double.toHexString(val);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...