【问题标题】:Why does .toString(16) convert rgb, decimal, or other inputs into a hexidecimal为什么.toString(16) 将rgb、十进制或其他输入转换为十六进制
【发布时间】:2017-01-31 18:26:56
【问题描述】:

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

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

如果有人对这是为什么有任何链接或见解,请告诉我。我很好奇。提前谢谢!

【问题讨论】:

  • 因为这就是它的本意。 Here.
  • 因为像#ffffff这样的十六进制颜色来自组合发出颜色的RGB值。所以 255,255,255 将创建 ffffff 组合。

标签: javascript hex rgb


【解决方案1】:

十六进制是以16为底。分解单词:hexa,意思是6;十进制,表示 10。10 + 6 = 16。几个主要的基数是:

  • 基数 2:二进制,2 个数字:[0, 1]
  • Base 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(十进制)。这是一个sn-p:

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

【讨论】:

  • @atrev 没问题,乐于助人
【解决方案2】:

发生这种情况是因为您使用 16 作为基数,如下所述:

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

如果你只是想回复"16"你可以这样做:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      参数:基数

      说明:可选。用于表示数字的基数 价值。必须是 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
      

      【讨论】:

        猜你喜欢
        • 2020-11-14
        • 1970-01-01
        • 1970-01-01
        • 2021-03-22
        • 2015-01-31
        • 2011-07-28
        相关资源
        最近更新 更多