`在ruby中以基值作为参数的to_i`方法
有人能用下面的例子解释一下在调用`在ruby中以基值作为参数的to_i`方法,ruby,Ruby,有人能用下面的例子解释一下在调用到_i时基本参数是如何工作的吗 '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 我不明白它到底是怎么工作的。有人能解释一下吗?这和'54000'的原因是一样的。to_i是54:to_i读取,直到找到字符串的结尾或无效数字 在二进制(基数2)中,唯一有效
到_i
时基本参数是如何工作的吗
'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
我不明白它到底是怎么工作的。有人能解释一下吗?这和
'54000'的原因是一样的。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
,换句话说,是指数字系统中的唯一位数
在十进制中,我们有0
到9
,10位数字表示数字。您使用
2
作为参数,这意味着只有0
和1
在工作
从:
返回将str
中的前导字符解释为
整数基数(介于2和36之间)。过去的外来人物
忽略有效数字的结尾。如果在上没有有效的数字
返回str
,0
的开头。这种方法永远不会引起争议
基有效时发生异常
您可以直接在Ruby中使用这些数字表示:
num_hex = 0x100
#=> 256
num_bin = 0b100
#=> 4
num_oct = 0o100
#=> 64
num_dec = 0d100
#=> 100
“2”。to#i#=>2
,2。to#s(2)#=>10
,“10”。to#i(2)#=>2
2.to#s=“2”
。在这种情况下,您应该使用Integer(x,2)
而不是x.to#i(2)
。后者永远不会抛出错误,但它也可能没有执行您想要的操作。API文档中描述了这种行为@2017kamb如果您对方法行为感到困惑,阅读API文档总是一个好主意。相反,'54000'。to_i(36)
返回521395291927273,因为它实际上将所有字符解释为36位基数。