Javascript:十六进制到十进制的字符串
我得到了包含多个十六进制数的字符串:Javascript:十六进制到十进制的字符串,javascript,string,hex,Javascript,String,Hex,我得到了包含多个十六进制数的字符串: let input='\x01\x01\x02\x01' 我希望将其转换为:1121(每个十六进制数的十进制表示) 我该怎么办?我尝试了很多方法,但我得到的唯一结果是一些内部带有问号的菱形或语法错误。非常感谢 为了能够处理转义序列本身而不是生成的空白,您必须使用字符串 原始然后您可以替换: let input = String.raw`\x01\x01\x02\x01`; console.log( input .replace(/\\x01/g,
let input='\x01\x01\x02\x01'代码>
我希望将其转换为:1121
(每个十六进制数的十进制表示)
我该怎么办?我尝试了很多方法,但我得到的唯一结果是一些内部带有问号的菱形或语法错误。非常感谢 为了能够处理转义序列本身而不是生成的空白,您必须使用字符串
原始
然后您可以替换:
let input = String.raw`\x01\x01\x02\x01`;
console.log(
input
.replace(/\\x01/g, "1")
.replace(/\\x02/g, "2")
);
下面是一个简单的方法,它转义字符串,删除空元素,将每个数字转换为十进制数字,将其作为字符串联接,然后将最终结果转换为数字
函数转换(字符串){
字符串=转义(字符串);
string=string.split(/%/).filter(e=>e);
string=string.map(e=>+(“0x”+e));
return+string.join(“”);
}
//测试用例
变量十进制=转换('\x01\x01\x02\x01');
console.log(十进制)代码>问题可能是,当您在代码中实际使用这一行时,let input='\x01\x01\x02\x01'代码>在运行脚本之前,十六进制值将转换为字符。如果您想要一个包含十六进制表示的字符串,您必须首先转义反斜杠:let input='\\x01\\x01\\x02\\x01'代码>字符串不包含十六进制数字,而是包含四个字符,ASCII代码为1、1、2和1。您的问题是如何将这样的字符串转换为“1121”,还是您对输入字符串有误解?看起来真的像那个任务吗?或者当你打印它的时候是这样的?这两者之间有很大的区别。谢谢,这很有效。在我的情况下,Asleespace的答案更适合我,但我绝对可以在将来将您的String.raw用于不同的用途。