【Javascript】如何自由实现int类型和字符串类型的转换

经常用 JavaScript 写代码的人,肯定都用过 parseInt() 来把字符串形式的整数转换成真正的数字类型,方便进行计算。

MDN 对 parseInt() 的定义如下:

parseInt(string)
parseInt(string, radix)

string 是要解析的值。如果它不是 string 类型,解析之前会先被内部转换成 string

radix 是一个介于 2 到 36 之间的值,表示 string 参数的进制基数。如果省略这个参数,它不会默认是 10 进制。比如,以 “0x” 开头的字符串会默认是 16 进制(十六进制)。如果你想了解更多关于不同输入的处理方式,可以参考 MDN 关于 parseInt() 的文章

parseInt()

如果你理解了 radix 参数的作用,parseInt() 可以用来在不同进制之间转换数字。

比如:

parseInt("23", 4)
parseInt("0x23")
parseInt("23", 2)

输出结果会是:

11
35
NaN

这里我们其实是在回答一个问题:“23 在 4 进制下的 10 进制值是多少?在 16 进制下呢?在 2 进制下呢?”

  1. 4 进制的 “23” 是 2 * 4 + 3,也就是 10 进制的 11
  2. “0x23” 表示 16 进制。2 * 16 + 3,也就是 10 进制的 35
  3. 2 进制的 “23” 是 NaN,因为 2 进制的数字只能包含 01

想象一下,如果有人需要你快速解析二进制数 “1110010”,这会有多方便!

parseInt("1110010", 2)

这会给出正确的 10 进制数:

114

toString(radix)

使用 toString(radix) 时,它会覆盖 Object 对象的 toString() 方法。当用于数字对象时,toString(radix) 会返回该数字对象在指定进制下的字符串表示。

toString(radix) 回答的问题是:“我如何用 4 进制表示 23?用 16 进制呢?用 2 进制呢?”

let num = 23

num.toString(4)
num.toString(16)
num.toString(2)

输出结果会是:

113
17
10111

实际上,parseInt()toString() 就像是一对互逆的操作:

let num = 23

parseInt(num.toString(4), 4)
parseInt(num.toString(16), 16)
parseInt(num.toString(2), 2)

结果会是:

23
23
23

如果你需要生成一个数字的二进制表示,toString(2) 特别有用。或者,如何将一个 16 进制数(基数为 16)转换成它的二进制等价形式呢?

parseInt("1F4", 16).toString(2)
"111110100"

(如果你好奇的话,这其实是 10 进制的 500!)

希望通过这段简短的探索,你能更深入地理解这两个方法。它们不仅仅是把整数转换成字符串,或者反过来。它们还可以用来在不同进制之间转换数字!

祝你编码愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值