我已经尝试在所有可能的地方进行搜索,以找到关于为什么 .toString(16) 将数字转换为十六进制值的答案。我的第一个问题是,为什么是 16?我的第二个问题是,即使我没有看到任何字母进入代码,这怎么能返回字母。例如,我不明白以下代码如何返回 ff 而不是数字。
var r = 255;
r.toString(16); //returns ff
如果有人对这是为什么有任何链接或见解,请告诉我。我很好奇。提前致谢!
最佳答案
十六进制是以16为底。分解的话:hexa,意思是6;十进制,表示 10。10 + 6 = 16。几个主要基数是:
- 基数 2:二进制,2 个数字:[0, 1]
- 8 进制:八进制,8 个数字:[0, 7]
- 以 10 为基数:十进制,10 个数字:[0, 9]
- 16 进制:十六进制,16 个符号:[0, 9] 和 [A, F]
根据 MDN documentation :
For
Number
objects, thetoString()
method returns a string representation of the object in the specified radix.Parameters
radix: Optional. An integer between 2 and 36 specifying the base to use for representing numeric values.
这意味着它将数字转换为字符串,并基于基数。 Number.prototype.toString
的语法是:
number.toString([radix])
其中 radix
是可选的。如果你指定基数,它会用那个基数转换,所以 16 是十六进制。如果未指定 radix
,则假定为 10(十进制)。这是一个片段:
var num = 16;
console.log(num.toString()) //"16", base 10 is assumed here if no radix given
console.log(num.toString(16)) //"10", base 16 is given
现在,关于 RGB 值:以 (255, 255, 255) [white] 为例。每个单独的值(红色、绿色或蓝色)都以十六进制表示。由于 255 是 0xFF
或只是十六进制的 FF
,因此完整的表示形式是 FFFFFF
,或者您看到的 ffffff
。
关于javascript - 为什么 .toString(16) 将 rgb、十进制或其他输入转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651531/