我有一些代码采用表示十六进制数字的字符串 - 实际上是十六进制颜色 - 并将它们相加。例如,添加 aaaaaa
和 010101
给出输出 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 更容易地使用十六进制?
原文由 brentonstrine 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,没有办法告诉 JavaScript 语言默认使用十六进制整数格式而不是十进制。您的代码尽可能简洁,但请注意,当您将“parseInt”与一个基数一起使用时,您不需要在前面加上“0x”基数指示符。
以下是我将如何处理您的问题:
正如一位评论者所提到的,上面的解决方案充满了问题,因此下面是一个函数,它进行适当的输入验证并在检查溢出时分别添加颜色通道。