我对to_i
的可选参数感到困惑。
具体而言,在此示例中,“基数”的含义及其对方法的影响:
"0a".to_i(16) #=> 10
关于调用方法的字符串,我对可选参数有麻烦。我以为返回值只是0
的整数值。
答案 0 :(得分:3)
简单的答案:这是因为Hexadecimal中的0a
或a
等于Decimal中的10
。
base
,换句话说,Radix表示数字系统中唯一数字的数量。
在十进制中,我们有0
至9
,其中10位数字代表数字。
在十六进制中,除了0
至9
外,还有16位数字,我们使用a
至f
来表示10
至{ {1}}。
您可以像这样测试它:
15
换句话说,十进制中的"a".to_i(16)
#=> 10
"b".to_i(16)
#=> 11
"f".to_i(16)
#=> 15
"g".to_i(16)
#=> 0 # Because it's not a correct hexadecimal digit/number.
'2c'.to_i(16)
#=> 44
'2CH2'.to_i(16)
#=> 44 # Extraneous characters past the end of a valid number are ignored, and it's case insensitive.
9.to_s.to_i(16)
#=> 9
10.to_s.to_i(16)
#=> 16
等于十六进制中的10
。
十六进制中的a
等于十进制中的10
。 (to_i的文档)
请注意,通常我们在十六进制数字之前使用16
:
0x
顺便说一句,您可以在Ruby中使用这些表示形式:
"0xa".to_i(16)
#=> 10
"0x100".to_i(16)
#=> 256
He x 最佳, b 初始, o 瞬时, d 理想(此{{1 }}当然是多余的,只是在某些情况下用于说明。