2010-10-21 52 views
2

這可能是非常複雜和扭曲的想法。學習一些JavaScript時得到它。它激起了我的想法。希望有可能是別人誰曾想過這個問題之前,也可能賜教:-)數字可與之關聯的基數是否有限制?

var n = 17; 

binary_string = n.toString(2);  // Evaluates to "10001" 
octal_string = "0" + n.toString(8); // Evaluates to "021" 
hex_string = "0x" + n.toString(16); // Evaluates to "0x11" 

這讓我更加探測到基地。我記得我的數字工程課程,並瞭解到,對於基數大於10的每個數字從10開始,將從'a','b'開始命名。

爲如:

var n = 10; 
var y = 11; 
string = n.toString(12); // Evaluates to 'a' 
string = y.toString(12); // Evaluates to 'b' 

然後,我理解這一點可以去uptil 'Z' 因此

var n = 35; 
string = n.toString(36); // Evaluates to "z" 

但是,這似乎是結束。如果我們做

var n = 35; 
string = n.toString(37); // Gives error Error: illegal radix 37 { message="illegal radix 37", more...} 

因此,我相信,我們只能數到自爲基地37票系統的36的基礎上,我們將無法計數36,因爲我們用盡英文字符。無論如何,我們可以做到嗎?也許我們可以添加其他字符。

我知道這是非常沒用的東西,我們永遠不會需要它。

但有沒有人想過它?

回答

1

是的,當然可以,只是不能用JavaScript的toString函數。

你只需要決定哪些字符用於你的數字。儘管有一些確定的標準,但這在很大程度上是任意的。例如,請參閱Base64,Ascii85等。

+0

對不起,你的回答是完全正確的。但是由於Preet Sangha的qtn會有更多的討論。我接受它作爲接受的答案。但是+1 – 2010-10-21 11:44:29

1

肯定能做到這一點,數量基地完成任意的(用英文字母后9僅僅是一個常見的約定)。 Number#toString是專門通過36處理基體2:

可選基數應在包含的範圍2的整數值到36

the spec,部分15.7.4.2。

相關問題