2016-05-11 90 views
4

也許這是跛腳的問題,如果是這樣,我真誠道歉。.toString範圍爲什麼限制爲36?

我遇到了,對我來說,一個有趣的挑戰。

<button onClick="myFunc()">Click Me</button>  

    <p id="test"></p> 

    <script> 
    function myFunc() { 
     var n = 15    
     var a = n.toString(); // outputs 15 
     var b = n.toString(2); // outputs 1111 
     var c = n.toString(9); // outputs 16 
     var d = n.toString(18); // outputs f 
     var e = n.toString(36); // outputs f 

     var total = a + "<br>" + b + "<br>" + c + "<br>" + d + "<br>" + e; 

     document.getElementById('test').innerHTML=total; 
    } 
    </script> 

我明白2將輸出二進制值,和18 & 36將輸出的十六進制值。但是當我放置37時它不輸出任何東西。

例如:

var f = n.toString(37); 

不輸出任何東西。

在控制檯它說:的RangeError:基數必須是整數至少2並且不大於36。爲什麼?

回答

7

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_radix

Why is it limited to 36? A radix that is larger than 10 uses alphabetical characters as digits. Therefore, the radix can not be larger than 36 as the Latin alphabet has 26 characters only.

更重要的是,隨着基數18你沒有得到十六進制值。十六進制以16爲基數

+0

「f」是16之後的唯一輸出嗎? – super11

+1

in hex yes https://en.wikipedia.org/wiki/Hexadecimal –

+1

似乎有點令人失望,我們至少可以去基地64('a-zA-Z0-9 + /'):D –