为什么.toString(16)将rgb,十进制或其他输入转换为十六进制

时间:2016-09-23 02:13:00

标签: javascript hex rgb

我已经尝试在任何地方搜索,找到答案为什么.toString(16)将数字转换为十六进制值。我的第一个问题是,为什么16?我的第二个问题是,即使我看到没有字母进入代码,这怎么回信。例如,我不明白以下代码如何返回ff而不是数字。

var r = 255;
r.toString(16); //returns ff

如果有人对此有任何链接或见解,请告知我们。我很好奇。提前谢谢!

4 个答案:

答案 0 :(得分:6)

十六进制是基数16.分解单词:hexa,意思是6;十进制,意思10. 10 + 6 = 16.一些主要的基础是:

  • Base 2:二进制,2个数字:[0,1]
  • 基数8:八进制,8个数字:[0,7]
  • 基数10:十进制,10个数字:[0,9]
  • Base 16:十六进制,16个符号:[0,9]和[A,F]

根据MDN documentation

  

对于Number个对象,toString()方法返回指定基数中对象的字符串表示。

     

参数

     

<强>基数:   可选的。一个介于2和36之间的整数,指定用于表示数值的基数。

这意味着它将数字转换为字符串,并基于基数。 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)[白色]为例。每个单独的值(红色,绿色或蓝色)以十六进制表示。由于255为0xFF或仅为FF十六进制,因此您看到的完整表示为FFFFFFffffff

答案 1 :(得分:1)

这是因为您使用16作为基数,如下所述:

http://www.w3schools.com/jsref/jsref_tostring_number.asp

如果您只是想回来"16",您可以这样做:

var number = 16;
var numberAsString = number.toString();

答案 2 :(得分:1)

返回“字符串”,因为toString()设置为返回String

此外,它是toString(16),因为十六进制表示16,它是16。因此,toString(16)将给定变量转换为所需形式的String,在这种情况下,您希望它是十六进制形式。

答案 3 :(得分:0)

http://www.w3schools.com/jsref/jsref_tostring_number.asp

  

参数:radix

     

描述:可选。用于表示数字的基数   值。必须是2到36之间的整数。

     
      
  • 2 - 数字将显示为二进制值
  •   
  • 8 - 该数字将显示为八进制值
  •   
  • 16 - 数字将显示为十六进制值
  •   
     

示例使用不同的基数将数字转换为字符串:

var num = 15;
var a = num.toString();
var b = num.toString(2);
var c = num.toString(8);
var d = num.toString(16);
     

a,b,c和d的结果将是:

15
1111
17
f