为什么032与Ruby中的32不同?
我注意到Ruby在使用032和32时表现不同。我曾经在代码中遇到032而不是32的语法错误。 谁可以给我解释一下这个? 或者我的代码本身有什么问题吗?
你看到的是032
是八进制表示, 32
是十进制:
>> 032 #=> 26 >> 32 #=> 32 >> "32".to_i(8) #=> 26 >> "32".to_i(10) #=> 32
并且,为了完整性,您可能需要处理hex:
>> 0x32 #=> 50 >> "32".to_i(16) #=> 50
和二进制:
>> 0b100000 #=> 32 >> 32.to_s(2) #=> "100000"
当你的数字前面有零时,Ruby将其解释为八进制(基数为8) 。
您的语法错误可能是这样的:
ruby-1.9.2-p136 :020 > 08 SyntaxError: (irb):20: Invalid octal digit
如果你用0(零)开始一个数字,ruby将它视为八进制,所以你通常不想要零。 您必须更具体地了解语法错误。
我不知道语法错误,但当你给一个数字前缀加零时,它意味着它是八进制(base-8)…所以032实际上是十进制的26