为什么Math.pow(16,6)不等于parseInt(0xFFFFFF,10)?

时间:2015-02-26 00:22:39

标签: javascript css hex rgb

我正在处理CSS颜色和十六进制编码。白色以CSS RGB表示法表示为十六进制#FFFFFF,或Javascript中的0xFFFFFF。

如果我理解正确,十六进制数中的每个位置都会从0到16.因此,一系列的六个Fs等于16 * 16 * 16 * 16 * 16 * 16,或16到6的幂:Math .pow(16,6)。此操作的结果是16777216。

我们还可以将十六进制值解析为基数10:parseInt(0xFFFFFF,10)。此操作的结果是16777215。

为什么两个操作之间的差异为1?

2 个答案:

答案 0 :(得分:1)

让我们从查看十进制数开始。

999999 10 不等于10 6

999999 10 小于10 6

999999 <子> 10 = 9×10 5 + 9×10 4 + 9×10 3 + 9×10 2 + 9×10 1 + 9×10 0

6位数可用于表示10个 6 不同的数字:0到999999 10


相同的十六进制。

FFFFFF 16 不等于16 6

FFFFFF 16 小于16 6

FFFFFF <子> 16 = 15×16 5 + 15×16 4 + 15×16 3 + 15×16 2 + 15×16 1 + 15×16 0

6个十六进制数字可用于表示16个 6 不同的数字:0到FFFFFF 16

答案 1 :(得分:0)

在十六进制中,F = 15,而不是16,将F相邻地放置n次将导致16 ^ n - 1类似于相邻地放置9&n,将导致10 ^ n -1。

这就是为什么会有区别的原因。