首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中更轻松地处理十六进制字符串和十六进制值

在Javascript中更轻松地处理十六进制字符串和十六进制值
EN

Stack Overflow用户
提问于 2012-06-14 04:54:45
回答 4查看 74.8K关注 0票数 25

我有一些代码,它接受表示十六进制数字的字符串-实际上是十六进制颜色-并将它们相加。例如,将aaaaaa010101相加得到输出ababab

然而,我的方法似乎不必要地冗长和复杂:

var hexValue = "aaaaaa";
hexValue = "0x" + hexValue;
hexValue = parseInt(hexValue, 16);
hexValue = hexValue + 0x010101;
hexValue = hexValue.toString(16);
document.write(hexValue); // outputs 'ababab'

在连接0x之后,十六进制值仍然是一个字符串,所以我必须将其更改为数字,然后我可以加法,然后我必须将其改回十六进制格式!如果我添加的数字一开始是一个十六进制字符串,或者如果你考虑到我在这一切开始之前从十六进制颜色中删除了#,那么还有更多的步骤。

当然,还有一种更简单的方法来进行这种简单的十六进制计算!为了清楚起见,我的意思不是像(parseInt("0x"+"aaaaaa",16)+0x010101).toString(16)那样把所有的东西都放在一行上,或者使用速记--我的意思是实际上做的操作更少。

有没有办法让javascript停止对它所有的数学运算使用十进制,转而使用十六进制?或者有没有其他方法可以让JS更容易地与十六进制一起工作?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-14 05:32:48

不,没有办法告诉JavaScript语言在默认情况下使用十六进制整数格式而不是十进制。您的代码尽可能简洁,但请注意,当您将"parseInt“与基址一起使用时,您不需要在"0x”基址指示器之前添加。

以下是我将如何处理您的问题:

function addHexColor(c1, c2) {
  var hexStr = (parseInt(c1, 16) + parseInt(c2, 16)).toString(16);
  while (hexStr.length < 6) { hexStr = '0' + hexStr; } // Zero pad.
  return hexStr;
}

addHexColor('aaaaaa', '010101'); // => 'ababab'
addHexColor('010101', '010101'); // => '020202'
票数 35
EN

Stack Overflow用户

发布于 2012-06-14 05:00:08

这样如何:

var hexValue = "aaaaaa";
hexValue = (parseInt(hexValue, 16) + 0x010101).toString(16);
document.writeln(hexValue); // outputs 'ababab'

如果使用parseInt,则不需要添加0x前缀。

票数 11
EN

Stack Overflow用户

发布于 2018-02-21 07:59:35

我认为公认的答案是错误的。十六进制的颜色表示不是线性的。而是给予R、G和B 3组两个字符。

因此,你不能简单地添加一个整数,然后期望RGB正确地相加。

For Example

n1 = '005500'; <--- green
n2 = '00ff00'; <--- brighter green

将这些数字相加应该会得到更绿色的结果。在任何情况下,添加绿色都不应该增加红色。但是按照公认的答案去做,就像把整数当做一个数字一样,然后你可以继续处理大于f的数字,f+1 = 10。

you get `015400` so by adding greens the RED increased .... WRONG

将005500 + 00ff00相加应该会得到,= 00ff00。你不能将更多的绿色添加到最大绿色。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11023144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档