使用 将十进制数转换为 10 以上的基数.toString(base)
时,似乎我总是得到一个小写字符串。我可以依靠这个吗?大写字符串是正确的,尽管需要为我的应用程序进行转换。
引用规范中定义它的部分(我看了但找不到)和任何反例(返回大写的浏览器)的额外功劳。
例子:
(12648430).toString(16) // returns: "c0ffee". Not "C0FFEE"
使用 将十进制数转换为 10 以上的基数.toString(base)
时,似乎我总是得到一个小写字符串。我可以依靠这个吗?大写字符串是正确的,尽管需要为我的应用程序进行转换。
引用规范中定义它的部分(我看了但找不到)和任何反例(返回大写的浏览器)的额外功劳。
例子:
(12648430).toString(16) // returns: "c0ffee". Not "C0FFEE"
如果 ToInteger( radix ) 不是 2 到 36 之间的整数,则抛出RangeError异常。如果 ToInteger( radix ) 是 2 到 36 之间的整数,但不是 10,则结果是使用指定基数的此 Number 值的字符串表示形式。字母 az 用于值 10 到 35的数字。如果基数不是 10,则精确算法取决于实现,但是该算法应该是 9.8.1 中指定的算法的概括。
(我的重点)
但是,第 3 版规范(从 1999 年开始)并没有这么说,它只是说:
如果 radix 是从 2 到 36 的整数,但不是 10,则结果是一个字符串,其选择取决于实现。
...因此您可能会在野外找到使用大写字母(或完全使用其他字母)的引擎。我会说这不太可能,如果有重要的已知实现没有这种行为,他们通常不会在规范中添加类似的东西。我在当前版本的 Chrome、Firefox 和 Opera 以及 IE8 甚至 IE6 上都使用小写字母。所以我想说这可能是相当一致的。
(12648430).toString(16) 将始终返回:“c0ffee”。不是“C0FFEE”,用一些浏览器检查后,我发现了一个确认:
Number 对象覆盖了 Object 对象的 toString() 方法;它不
继承 Object.prototype.toString()。对于 Number 对象,toString() 方法以指定的基数返回对象的字符串表示形式。toString() 方法解析它的第一个参数,并尝试以
指定的基数(基数)返回字符串表示。对于大于 10 的基数,字母表中的字母表示大于 9 的数字。例如,对于十六进制数(以 16 为底),使用 a 到 f。
请参阅参考:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString 。