【问题标题】:How to get hex integer from a string in JS?如何从JS中的字符串中获取十六进制整数?
【发布时间】:2012-05-04 12:44:37
【问题描述】:

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

提前致谢,

【问题讨论】:

  • 确定这是重复的......我希望“相关问题”对语言标签更聪明:-/
  • @Danny:“十六进制值”是指 数字 值 FFFFFF 十六进制(例如,16777215 十进制?)。如果是这样,只需说“数值”,将“十六进制”一词带入字符串领域。不过,我认为您的意思可能是数字。
  • @T.J.克劳德我编辑了标题
  • 我刚刚在这里回答了一个类似的问题:stackoverflow.com/questions/48140695/…

标签: javascript hex


【解决方案1】:

去掉“#”并使用parseInt()

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

然后,如果你想查看十六进制,你可以使用.toString():

console.log(hex.toString(16));

【讨论】:

  • 为了效率,我更喜欢substring()(如@TJCrowder 的回答)而不是replace()
  • @MarkReed:这完全取决于 OP 真正 想要什么,从问题中并不清楚。可能(鉴于0xFFFFFF 上没有引号)OP 想要数值(当然,这会使问题的标题完全错误——这不是第一次!)。
  • @TJCrowder:您的回复似乎是错误的答案。 :) 我上面所说的只是我将使用substring(1) 而不是replace(regex) 来解决这个问题。
  • @Displee 是吗?
  • @Pointy parseInt("#797e61".replace(/^#/, ''), 16);结果给我 7962209,而不是 0x797e61。
【解决方案2】:

使用此代码:

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>

【讨论】:

  • 希望您简要说明代码如何解决问题中的问题。
猜你喜欢
  • 1970-01-01
  • 2010-09-18
  • 2013-04-28
  • 2017-07-01
  • 1970-01-01
  • 2017-12-22
  • 2022-01-16
  • 2011-07-12
  • 2013-01-26
相关资源
最近更新 更多