Why does .toString(16) convert rgb, decimal, or other inputs into a hexidecimal

泪湿孤枕 提交于 2019-12-11 14:28:09

问题


I've tried searching everywhere I could to find the answer as to why .toString(16) converts a number to a hexidecimal value. My first question is, why 16? My second question is, how can this return letters even though I see no letters going into the code. For example, I don't understand how the following code returns ff instead of a number.

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

If anyone has any links or insights as to why this is, please let me know. I'm very curious. Thank you in advance!


回答1:


Hexadecimal is base 16. Break down the words: hexa, meaning 6; decimal, meaning 10. 10 + 6 = 16. A few major bases are:

  • Base 2: Binary, 2 numbers: [0, 1]
  • Base 8: Octal, 8 numbers: [0, 7]
  • Base 10: Decimal, 10 numbers: [0, 9]
  • Base 16: Hexadecimal, 16 symbols: [0, 9] and [A, F]

Per the MDN documentation:

For Number objects, the toString() 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.

This means it converts the number into a string, and based on the radix. The syntax for Number.prototype.toString is:

number.toString([radix])

Where radix is optional. If you specify the radix, it will convert with that base, so 16 is hexadecimal. If radix is not specified, 10 (decimal) is assumed. Here's a snippet:

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

Now, regarding RGB values: take (255, 255, 255) [white] as an example. Each individual value (red, green, or blue) is represented in hex. Since 255 is 0xFF or simply FF in hex, the full representation is FFFFFF, or ffffff you see.




回答2:


This is happening because you are using 16 as the radix, as explained here:

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

If you are just trying to get back "16"you can just do:

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



回答3:


In returns a 'String' since toString() is set to return a String.

In addition, it is toString(16) because hexadecimal means 16 and it is base 16. Therefore, toString(16) converts a given variable into a String in a desired form, in this case you want it to be in the hexadecimal form.




回答4:


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

Parameter: radix

Description: Optional. Which base to use for representing a numeric value. Must be an integer between 2 and 36.

  • 2 - The number will show as a binary value
  • 8 - The number will show as an octal value
  • 16 - The number will show as an hexadecimal value

Example Convert a number to a string, using different bases:

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

The result of a,b,c, and d will be:

15
1111
17
f


来源:https://stackoverflow.com/questions/39651531/why-does-tostring16-convert-rgb-decimal-or-other-inputs-into-a-hexidecimal

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!