Javascript:十六进制至十进制的字符串

时间:2018-10-10 19:39:12

标签: javascript string hex

我有一个包含多个十六进制数字的字符串:

let input = '\x01\x01\x02\x01';

我希望将其转换为:1121(每个十六进制数字的十进制表示形式)

我将如何处理?我已经尝试了很多事情,但是我得到的唯一输出是一些带有问号或语法错误的菱形形状。提前非常感谢!

2 个答案:

答案 0 :(得分:1)

这是一种简单的方法,可以对字符串进行转义,删除空元素,将每个数字转换为十进制数字,将其作为字符串连接,然后将最终结果转换为数字。

function convert(string) {
  string = escape(string);
  string = string.split(/%/).filter(e=>e);
  string = string.map(e => +("0x"+e)); 
  return +string.join("");
}

// Test case
var decimal = convert('\x01\x01\x02\x01');
console.log(decimal);

答案 1 :(得分:0)

要能够使用转义序列本身而不是最终的空格,可以使用String raw然后替换:

let input = String.raw`\x01\x01\x02\x01`;

console.log(
  input
   .replace(/\\x01/g, "1")
   .replace(/\\x02/g, "2")
);