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'

然后我明白这可能会上升到'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...}

因此,我相信我们只能数到 36 的基数。因为对于基数为 37 的计数系统,我们将无法数 36,因为我们用尽了英文字符。无论如何我们可以做到吗?也许我们可以添加其他字符。

我知道这是非常没用的东西,而且我们在生活中永远不需要它。

但是有没有人已经考虑过了?

4

3 回答 3

2

在这里看到我的问题。36进制后用什么符号

于 2010-10-21T11:25:53.287 回答
1

是的,当然可以,只是不能用 JavaScript 的toString函数。

您只需要决定为您的数字使用哪些字符。这在很大程度上是任意的,尽管有一些既定的标准。例如,参见Base64Ascii85等。

于 2010-10-21T11:25:44.063 回答
1

当然可以这样做,数字基数是完全任意的(使用英文字母9只是一个常见的约定)。Number#toString专门设计用于处理 2 到 36 号底座:

可选的radix应该是介于 2 到 36 之间的整数值。

来自规范,第 15.7.4.2 节。

于 2010-10-21T11:28:11.843 回答