2016-05-11 1 views
4

Peut-être que c'est une question boiteuse, si oui, je m'excuse sincèrement. J'ai rencontré un challenge intéressant pour moi.Pourquoi la plage .toString est-elle limitée à 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> 

Je comprends 2 volonté valeur binaire de sortie, et 18 & 36 sera la valeur hexadécimale de sortie. Mais quand je mets 37 ça ne sort rien.

Par exemple:

var f = n.toString(37); 

ne fait rien pas de sortie.

Dans la console, il est indiqué: RangeError: radix doit être un nombre entier d'au moins 2 et d'au plus 36. Pourquoi?

Répondre

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.

ce qui est plus, avec 18 radix vous ne recevez pas les valeurs hexadécimal. hexadécimal est la base 16

+0

"f" est la seule sortie après 16? – super11

+1

en hexadécimal oui https://en.wikipedia.org/wiki/Hexadecimal –

+1

Semble un peu décevant, nous pourrions au moins aller à la base 64 ('a-zA-Z0-9 + /'): D –