Как создать массив из номера, основанный на количестве цифр в JS? - PullRequest
0 голосов
/ 20 января 2019

Мне нужно перевести ASCII-код в HEX в символы.Я получил от номера сервера (в виде строки) в ascii, например: 64656661756c74 (что означает «по умолчанию»).Я знаю о String.fromCharCode (), но сначала мне нужно разделить необработанное сообщение на 2-значные части (массив).Как я могу разделить 2-значный длительность?Благодарю.

Ответы [ 4 ]

0 голосов
/ 20 января 2019

Как отмечено в комментариях выше, ваша последовательность ASCII, вероятно, неверна.Возможно, это шестнадцатеричный поток.

Предполагая правильные числа ASCII, вы можете сделать следующее:

var str = '68697065857684';
str = str.match(/.{1,2}/g);


for (index = str.length - 1; index >= 0; --index) {
  var temp = str[index];  
  str[index]= String.fromCharCode(temp);
}

console.log(str);
0 голосов
/ 20 января 2019

Поскольку строка представляет собой шестнадцатеричное представление строки, вам также необходимо преобразовать десятичное число, прежде чем переходить к String.fromCharCode:

const str = "64656661756c74"
              .match(/.{2}/g)
              .map(ch => String.fromCharCode(parseInt(ch, 16)))
              .join("");
              
console.log(str);
// "default"

Как правило, в str хранится значение "default", как вы сказали.

0 голосов
/ 20 января 2019

Использование replace:

let a = '64656661756c74';

let r = a.replace(/([0-9a-f]{2})/g, (m, a) => String.fromCharCode(parseInt(a, 16)))

console.log(r)

Олдскульный подход:

let a = '64656661756c74', r = '';

for (let i = 0; i < a.length; i+=2)
  r += String.fromCharCode(parseInt(a.substring(i, i+2), 16))

console.log(r)
0 голосов
/ 20 января 2019

Чтобы разделить это на 2-символьные куски, используйте регулярное выражение, например, так:

var str = '64656661756c74';
str = str.match(/.{1,2}/g);
console.log(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...