如何从 JS 中的字符串中获取十六进制整数

How to get hex integer from a string in JS?

本文关键字:获取 十六进制 整数 字符串 JS      更新时间:2023-09-26

我想将这个:"#FFFFFF"转换为这个:0xFFFFFF。不使用 eval 怎么可能?

提前感谢,

去掉"#"并使用parseInt()

var hex = parseInt(str.replace(/^#/, ''), 16);

然后,如果你想十六进制看到它,你可以使用.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