将十六进制转义字符转换为二进制

时间:2016-06-27 11:00:16

标签: javascript java python

我正在寻找一种将JavaScript字符统一转换为二进制的方法。我面临的一个问题是我无法正确转换unescape函数中使用的字符串

document.write("HI"); ==> HI (case 1)
document.write("\x48\x49");  ==> HI (case 2)
document.write(unescape("%48%49")); ==> HI (case 3)

案例1:转换" HI"二进制生成:

0100100001001001

案例2:转换" \ x48 \ x49"二进制生成:

0100100001001001

案例3:转换"%48%49"二进制生成:

001001010011010000111000001001010011010000111001

我理解在案例3中发生了什么。它将每个char转换为二进制,而没有意识到这些字符是十六进制表示。我想知道是否有办法使案例3具有与案例1和案例2相同的二进制表示而不需要任何预处理?

即,是否有JavaScript,Python或任何其他语言的功能可以实现"%48"是一个以十六进制表示的char,能够将其转换为二进制吗?

1 个答案:

答案 0 :(得分:0)

decodeURIComponent是正确的功能。不推荐使用decode函数。这是一个例子。

如果您将%48%49放入输入中并单击“转换”按钮,则会为您提供第二种情况。

var test = document.querySelector("#test");
var btn = document.querySelector("#btn");
var result = document.querySelector("#result");

btn.addEventListener("click", function() {
  var value = decodeURIComponent(test.value);
  var resultText = "";
  
  for (i = 0; i < value.length; i++) {
    resultText += value.charCodeAt(i).toString(2);
  }
  
  result.innerText = resultText;
});
<input type="text" id="test">
<button id="btn">Convert</button>

<p id="result"></p>