Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:十六进制到十进制的字符串_Javascript_String_Hex - Fatal编程技术网

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用于不同的用途。