我有一个将十六进制转换为字符串的函数。 控制台然后说:“在第148行未定义十六进制”,即: “ hex = hex.toString()”。发生这种情况的任何原因?
function hexToStr(hex) {
hex = hex.toString();
var str = '';
for (var n = 0; n < hex.length; n += 2) {
str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
}
return str;
}
答案 0 :(得分:0)
未定义是JavaScript中的一个值,例如null。不管调用此函数是什么,都给十六进制提供不确定的值。
答案 1 :(得分:0)
您的功能似乎工作正常。为了安全起见,也许添加检查以确保输入是字符串。
function hexToStr(hex) {
if (typeof(hex) !== 'string') throw ('Input a string')
var str = '';
for (var n = 0; n < hex.length; n += 2) {
str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
}
return str;
}
function handleClick() {
var input = document.getElementById('hexGoesHere').value
var output = hexToStr(input)
document.getElementById('stringGoesHere').innerText = output
}
<input id="hexGoesHere" type="text" value="48656c6c6f20776f726c6421"></input>
<button onClick=handleClick()>Convert</button>
<p>Output:</p>
<p id="stringGoesHere"></p>