.toString(16)总是返回小写吗?

Col*_*der 19 javascript tostring

使用时将十进制数转换为10以上的基数.toString(base),似乎我总是得到一个小写字符串.我可以依靠吗?大写字符串是正确的,但需要转换为我的应用程序.

引用定义此规范的部分(我看起来也找不到它)以及任何反例(返回大写的浏览器)的额外功劳.

例:

(12648430).toString(16) // returns: "c0ffee". Not "C0FFEE"
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 19

可能.它在第5版规范§15.7.4.2中定义:

如果ToInteger(radix)不是2到36之间的整数,则抛出RangeError异常.如果ToInteger(radix)是2到36之间的整数,但不是10,则结果是使用指定基数的此Number值的String表示形式.字母az用于值为10到35数字.如果基数不是10,则精确算法是依赖于实现的,但算法应该是9.8.1中指定的算法的概括.

(我的重点)

但是,第3版规范(从1999年开始)并未说明,它只是说:

如果radix是2到36之间的整数,但不是10,则结果是一个字符串,其选择取决于实现.

...所以你可能会在野外找到使用大写的引擎(或完全不同的东西).我说这是不太可能的,如果有重要的已知实现没有那种行为,他们通常不会在规范中添加类似的东西.在当前版本的Chrome,Firefox和Opera以及IE8甚至IE6上获得了小写.所以我说它可能相当一致.

  • @ColBeseder::-) FWIW,我同意thg435.我不会为此推送更新**,但我很想将它包含在我接下来推送的任何更新中.再说一遍,如果你有一个强大的测试套件,那就没有必要了 - 如果你添加对一些不能正确处理这个问题的模糊引擎的支持,那么测试套件会解决问题(截至第5版规范). (3认同)