`to_i`方法,基值为ruby中的参数

问题描述 投票:0回答:2

有人解释在使用以下示例调用to_i时base参数如何工作?

'2'.to_i(2) #=> 0
'3'.to_i(2) #=> 0
'12'.to_i(2) #=> 1
'122'.to_i(2) #=> 1
'20'.to_i(2) #=> 0
'21'.to_i(2) #=> 0

我不明白它是如何工作的。有人可以解释一下吗?

ruby
2个回答
6
投票

这与'54thousand'.to_i54的原因相同:to_i读取直到找到字符串结尾或无效数字。

在二进制(基数2)中,唯一有效的数字是01。因此,因为2无效,'122'.to_i(2)'1'.to_i(2)相同。此外,'2'.to_i(2)''.to_i(2)相同,0相当直观base


3
投票

Radix,换句话说0表示数字系统中唯一数字的数量。

在十进制中,我们有92,10位数代表数字。 你使用Binary作为参数,这意味着0,所以只有1Doc of to_i工作。

来自str

返回将str中的前导字符解释为整数基数(2到36之间)的结果。超出有效数字末尾的无关字符将被忽略。如果在0开头没有有效数字,则返回num_hex = 0x100 #=> 256 num_bin = 0b100 #=> 4 num_oct = 0o100 #=> 64 num_dec = 0d100 #=> 100 。当base有效时,此方法永远不会引发异常。

您可以直接在Ruby中使用这些数字表示:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.