我想将此:
"#FFFFFF"
转换为:0xFFFFFF
。不使用 eval 怎么可能?
提前致谢,
去掉“#”并使用
parseInt()
.
var hex = parseInt(str.replace(/^#/, ''), 16);
然后,如果你想 see 十六进制,你可以使用
.toString()
:
console.log(hex.toString(16));
使用此代码:
var resultP = document.getElementById('result');
var btn = document.querySelector('button');
var input = document.querySelector('input');
function convert(hex) {
return Number(`0x${hex.substr(1)}`);
}
btn.addEventListener('click', () => {
resultP.innerHTML = convert(input.value);
})
* {
font-family: Arial;
}
<!DOCTYPE html>
<html>
<head>
<title>Hex code to hex integer</title>
<meta charset="UTF-8" />
</head>
<body>
<input type="text" maxlength="7" />
<button>Done</button>
<br />
Result:
<p id="result"></p>
</body>
</html>
你可以试试这个代码:
function hex2num(hexcode){ return Number( '0x' + hexcode.split(/[^0-9a-fA-F]*/).join('') ) }
此函数将在尝试解析输入之前去除所有非 0-9 之间的数字或 A-F 之间的字母字符的字符。输出是一个数字,因为
0x009 === 9
在 JS.
此解决方案在处理小于 MAX SAFE INTEGER (9007199254740991) 的数字时有效,但如果十六进制代码等于大于该数字的数字,您可能需要使用不同的解决方案。
预期用途:
hex2num('#0000FF') === 255 // true
hex2num('#FFFFFF') === 16777215 // true
hex2num('0x000000000001') === 1 // true
hex2num('0L0L4') === 4 // true