我正在寻找一种将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,能够将其转换为二进制吗?
答案 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>