如何基于JS中的数字从数字创建数组?

时间:2019-01-19 22:00:32

标签: javascript arrays string

我需要将十六进制的ASCII代码转换为字符。我从ascii中的服务器编号(作为字符串)获得,例如:64656661756c74(这意味着“默认”)。我知道String.fromCharCode(),但是首先我需要将原始消息拆分为2位数字(数组)。如何分割基于两位数的持续时间? 谢谢。

4 个答案:

答案 0 :(得分:4)

由于字符串是十六进制字符串表示形式,因此在传递给String.fromCharCode之前,还必须转换为十进制数字:

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

就像您所说的那样,它基本上在str中存储了“默认”值。

答案 1 :(得分:2)

使用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)

答案 2 :(得分:1)

要将其分成2个字符的块,请使用正则表达式,如下所示:

var str = '64656661756c74';
str = str.match(/.{1,2}/g);
console.log(str);

答案 3 :(得分:0)

如上所述,您的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);