ШЕСТНАДЦАТЕРИЧНЫЙ ASCII синтаксического анализа в числа?

У меня есть устройство H/W, которое обычно использует последовательный порт для интерфейса, отправляя и получая двоичные сообщения к ПК программа UI. Я добавил порт Ethernet и маленький стек TCP/IP с маленьким веб-сервером, который я хочу использовать для замены последовательного порта UI веб-браузером UI.

Сообщения являются главным образом видом запроса/ответа вещей, но для некоторых веб-страниц мне, возможно, понадобятся к Tx/Rx два или больше сообщения для получения всей информации, в которой я нуждаюсь для страницы. Я буду использовать AJAX XMLHttpRequest (), чтобы отправить сообщения и получить ответы для страницы.

Устройство H/W имеет ограниченные ресурсы (ЦП и RAM) так для хранения этого простым на том конце, я хочу просто сделать немного интерфейса CGI, который берет исходящие сообщения и кодирует их ШЕСТНАДЦАТЕРИЧНЫМ ASCII (т.е. двумя ШЕСТНАДЦАТЕРИЧНЫМИ символами/байт ASCII) для отправки к браузеру, который будет использовать некоторый сценарий Java, чтобы выбрать независимо сообщения в поля и преобразовать их в числовой Вар и отобразить их пользователю. То же для сообщений, отправленных с браузера на устройство H/W.

Сообщения содержат смесь типов поля, подписанных и неподписанных байтов, коротких замыканий, longs, плаваний, и являются далее сложными путем нахождения главным образом в прямом порядке байтов в сообщениях.

Я могу обработать код конца H/W, но я изо всех сил пытаюсь изучить сценарий Java и мог использовать справку с функцией для перевода ШЕСТНАДЦАТЕРИЧНОГО ASCII <-> численные данные на конце браузера.

Какие-либо идеи? Какой-либо пример кода некоторые, где?

Спасибо, Paul

12
задан Paul 30 December 2009 в 18:46
поделиться

3 ответа

Звучит так, как будто вы хотите разобрать . Он занимает строку и необязательный радикс (который всегда должен быть задан), и разбирает число как целое число в этом радиксе (или радикс, основанный на формате числа, если оно не задано, поэтому вы должны всегда задавать его; люди удивляются, когда обнаруживают, что parseInt("010") возвращает 8).

> parseInt("ab", 16)
171

Для обратного преобразования в шестнадцатеричный вы можете использовать toString:

> var num = 16
> num.toString(16)
"10"

Обратите внимание, что вам придется самим разбивать его на два символа, если он выйдет только как один:

> num = 5
> num.toString(16)
"5"

Мне было скучно, поэтому я написал несколько функций для выполнения преобразования в обоих направлениях для вас:

function parseHexString(str) { 
    var result = [];
    // Ignore any trailing single digit; I don't know what your needs
    // are for this case, so you may want to throw an error or convert
    // the lone digit depending on your needs.
    while (str.length >= 2) { 
        result.push(parseInt(str.substring(0, 2), 16));
        str = str.substring(2, str.length);
    }

    return result;
}

function createHexString(arr) {
    var result = "";
    for (i in arr) {
        var str = arr[i].toString(16);
        // Pad to two digits, truncate to last two if too long.  Again,
        // I'm not sure what your needs are for the case, you may want
        // to handle errors in some other way.
        str = str.length == 0 ? "00" :
              str.length == 1 ? "0" + str : 
              str.length == 2 ? str :
              str.substring(str.length-2, str.length);
        result += str;
    }

    return result;
}

Которые можно использовать следующим образом:

> parseHexString("abcd100001")
[171, 205, 16, 0, 1]
> createHexString([0, 1, 2, 10, 20, 100, 200, 255, 1000, 2000])
"0001020a1464c8ffe8d0"
> parseHexString(createHexString([0, 1, 2, 10, 20, 100, 200, 255, 1000, 2000]))
[0, 1, 2, 10, 20, 100, 200, 255, 232, 208]
34
ответ дан 2 December 2019 в 03:25
поделиться

Вы ищете функцию parseInt() :

x = "0xff";
y = parseInt(x, 16);
alert(y);   //255
7
ответ дан 2 December 2019 в 03:25
поделиться
[

]Вы искали что-то вроде этих 2-х функций?[

] [
<html>
    <head>
    <script type="text/javascript">
        function hex2Decimal( hex )
        {
            return parseInt("0x"+hex);
        }

        function decimal2Hex( num )
        {
            return num.toString(16);
        }
    </script>

    </head>
    <body>

        <script type="text/javascript">
            document.write(hex2Decimal("A") + "<br />");
            document.write(decimal2Hex(16) + "<br />");
        </script>
    </body>
</html>
]
3
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: