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