有人解释在使用以下示例调用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
我不明白它是如何工作的。有人可以解释一下吗?
这与'54thousand'.to_i
是54
的原因相同:to_i
读取直到找到字符串结尾或无效数字。
在二进制(基数2)中,唯一有效的数字是0
和1
。因此,因为2
无效,'122'.to_i(2)
与'1'.to_i(2)
相同。此外,'2'.to_i(2)
与''.to_i(2)
相同,0
相当直观base
。
Radix,换句话说0
表示数字系统中唯一数字的数量。
在十进制中,我们有9
到2
,10位数代表数字。
你使用Binary作为参数,这意味着0
,所以只有1
和Doc 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