繁体   English   中英

如何撤消“toString()” function

[英]How to undo the “toString()” function

JavaScript 的toString function 有 1 个参数:base。 如果我使用(2) ,那么 output 字符串将为二进制, (16) -> 十六进制, (8) -> 八进制。 这些不是它支持的唯一基础; 它最多支持 36 个基数。

1234567890n.toString(36)

该表达式的结果是:

kf12oi

由于这是一个不会导致数据丢失的纯一元 function,我猜也有办法撤消它,对吧?

我尽量不使用数字前缀,例如0b0x0o ,因为它们并不能涵盖所有内容。

如果答案不是交叉兼容的,它仍然是可以接受的。

更新

对不起,我忘了提,输入实际上是一个BigInt并且在使用parseInt()时被认为是Infinity

只需将数字解析为:

parseInt('kf12oi', 36); // 1234567890

如果数字不适合 Number 类型。 您应该手动转换数字:

 parseBigInt = (value = '0', base = 10) => [].reduce.call(value, (acc, x) => acc * BigInt(base) + BigInt(parseInt(x, base)), 0n); valB10 = '1' + [...new Array(600)].map(x => Math.random() * 10 | 0).join(''); console.log('%s', BigInt(valB10)); valB36 = BigInt(valB10).toString(36); console.log(valB36); parsed = parseBigInt(valB36, 36); console.log('%s', parsed); console.log(BigInt(valB10) === parsed);

使用parseInt将任何根数转换为小数

 let num = 23; let inBinary = num.toString(2); console.log(inBinary); let backtoDecimal = parseInt(inBinary, 2) console.log(backtoDecimal)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM