Node Red javascript Преобразование строки HEX в строку ASCII [дубликат]

В этой проблеме правильная версия Visual Studio верна: никакая спецификация HTML не позволяет p в button, даже довольно либеральное определение в HTML5 CR.

Однако браузеры на самом деле не применяют это ограничение (в том смысле, что они применяют, например, ограничение, которое span не может содержать p: они неявно закрывают открытый элемент span, когда видят тег

). Таким образом, ваш код «работает», хотя на самом деле нет гарантии, что он будет продолжать работать (или что он работает в всех браузерах).

Чтобы сделать код формально действительным, замените элемент p элементом span и стилем его. Вы также можете поставить перед ним тег
, чтобы обеспечить разрыв строки, даже когда CSS отключен. Чтобы установить верхнее поле на нем, сделайте его блоком или встроенным блоком. Пример:

.anotherClass {
  display: block;
  margin-top: 1em;
}

62
задан Ionică Bizău 12 February 2014 в 15:12
поделиться

7 ответов

function hex2a(hexx) {
    var hex = hexx.toString();//force conversion
    var str = '';
    for (var i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}
hex2a('32343630'); // returns '2460'
134
ответ дан Flavio Vallone 26 August 2018 в 11:49
поделиться

Другой способ сделать это (если вы используете Node.js):

var input  = '32343630';
var output = new Buffer(input, 'hex');
log(input + " -> " + output);  // Result: 32343630 -> 2460
10
ответ дан 0x8BADF00D 26 August 2018 в 11:49
поделиться

Я нашел полезную функцию, присутствующую в библиотеке web3 .

var hexString = "0x1231ac"
string strValue = web3.toAscii(hexString)
4
ответ дан Ayushya 26 August 2018 в 11:49
поделиться

Я обнаружил, что вышеупомянутое решение не будет работать, если вам нужно иметь дело с такими управляющими символами, как 02 (STX) или 03 (ETX), что-либо под 10 будет считано как одна цифра и сбросить все после. Я столкнулся с этой проблемой, пытаясь разобрать последовательную связь. Итак, я сначала взял полученную шестнадцатеричную строку и поместил ее в объект-буфер, а затем преобразовал шестнадцатеричную строку в массив таких строк:

buf = Buffer.from(data, 'hex');
l = Buffer.byteLength(buf,'hex');
for (i=0; i<l; i++){
char = buf.toString('hex', i, i+1);
msgArray.push(char);

Затем .join it

message = msgArray.join('');

, тогда я создал функцию hexToAscii, как и в ответе @Delan Azabani выше ...

function hexToAscii(str){
    hexString = str;
    strOut = '';
        for (x = 0; x < hexString.length; x += 2) {
            strOut += String.fromCharCode(parseInt(hexString.substr(x, 2), 16));
        }
    return strOut;    
}

, затем вызвал функцию hexToAscii в 'message'

message = hexToAscii(message);

Этот подход также позволил мне выполнить итерацию по массиву и нарезать фрагменты в разные части передачи с помощью управляющих символов, чтобы я мог заниматься только той частью данных, которую я хотел. Надеюсь, это поможет кому-то еще!

0
ответ дан Bharata 26 August 2018 в 11:49
поделиться

Для полноты реализации обратная функция:

function a2hex(str) {
  var arr = [];
  for (var i = 0, l = str.length; i < l; i ++) {
    var hex = Number(str.charCodeAt(i)).toString(16);
    arr.push(hex);
  }
  return arr.join('');
}
a2hex('2460'); //returns 32343630
34
ответ дан michieljoris 26 August 2018 в 11:49
поделиться

Вы можете использовать это.

var asciiVal = "32343630".match(/.{1,2}/g).map(function(v){
      return String.fromCharCode(parseInt(v, 16));
    }).join('');
    
document.write(asciiVal);

15
ответ дан Sampath Liyanage 26 August 2018 в 11:49
поделиться

Оптимизированная версия реализации обратной функции, предложенная @michieljoris (согласно комментариям @Beterraba и @Mala):

function a2hex(str) {
  var hex = '';
  for (var i = 0, l = str.length; i < l; i++) {
    var hexx = Number(str.charCodeAt(i)).toString(16);
    hex += (hexx.length > 1 && hexx || '0' + hexx);
  }
  return hex;
}
alert(a2hex('2460')); // display 32343630

0
ответ дан SimonC 26 August 2018 в 11:49
поделиться
Другие вопросы по тегам:

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