为什么 Math.pow(16, 6) 不等于 parseInt(0xFFFFFF, 10)?
Why is Math.pow(16, 6) not equal to parseInt(0xFFFFFF, 10)?
我正在处理 CSS 颜色和十六进制编码。白色以 CSS RGB 表示法表示为十六进制 #FFFFFF,或 Javascript.
中的 0xFFFFFF
如果我没有理解错的话,十六进制数的每个位置都是从0到16。所以一系列六个F等于16 * 16 * 16 * 16 * 16 * 16,或16的6次方: Math.pow(16, 6)。这个操作的结果是16777216.
我们还可以将十六进制值解析为以 10 为基数:parseInt(0xFFFFFF, 10)。这个操作的结果是16777215.
为什么两次操作相差1?
在十六进制中,F = 15,而不是 16,将 F 相邻 n 次将得到 16^n - 1 类似于将 9 相邻 n 次将得到 10^n -1。
这就是差异的原因。
让我们从十进制数开始。
99999910 不等于 106.
99999910比106.
少一
99999910
= 9 × 105
+ 9 × 104
+ 9 × 103
+ 9 × 102
+ 9 × 101
+ 9 × 100
6位数字可以表示106个不同的数:0到99999910.
十六进制相同。
FFFFFF16 不等于 166.
FFFFFF16 比 166.
少一
FFFFFF16
= 15 × 165
+ 15 × 164
+ 15 × 163
+ 15 × 162
+ 15 × 161
+ 15 × 160
6个十六进制数字可以用来表示166个不同的数字:0到FFFFFF16.
我正在处理 CSS 颜色和十六进制编码。白色以 CSS RGB 表示法表示为十六进制 #FFFFFF,或 Javascript.
中的 0xFFFFFF如果我没有理解错的话,十六进制数的每个位置都是从0到16。所以一系列六个F等于16 * 16 * 16 * 16 * 16 * 16,或16的6次方: Math.pow(16, 6)。这个操作的结果是16777216.
我们还可以将十六进制值解析为以 10 为基数:parseInt(0xFFFFFF, 10)。这个操作的结果是16777215.
为什么两次操作相差1?
在十六进制中,F = 15,而不是 16,将 F 相邻 n 次将得到 16^n - 1 类似于将 9 相邻 n 次将得到 10^n -1。
这就是差异的原因。
让我们从十进制数开始。
99999910 不等于 106.
99999910比106.
少一99999910 = 9 × 105 + 9 × 104 + 9 × 103 + 9 × 102 + 9 × 101 + 9 × 100
6位数字可以表示106个不同的数:0到99999910.
十六进制相同。
FFFFFF16 不等于 166.
FFFFFF16 比 166.
少一FFFFFF16 = 15 × 165 + 15 × 164 + 15 × 163 + 15 × 162 + 15 × 161 + 15 × 160
6个十六进制数字可以用来表示166个不同的数字:0到FFFFFF16.