开发者

Why is 032 different than 32 in Ruby? [duplicate]

开发者 https://www.devze.com 2023-02-23 05:22 出处:网络
This question already has answers here: What is an Illegal octal digit? (3 answers) Closed 1 year ago. 开发者_如何学C
This question already has answers here: What is an Illegal octal digit? (3 answers) Closed 1 year ago. 开发者_如何学C

I have noticed Ruby behaves differently when working with 032 and 32. I once got syntax errors for having 032 instead of just 32 in my code. Can someone explain this to me? Or is there something really wrong with my code itself?


What you're seeing is 032 is an octal representation, and 32 is decimal:

>> 032 #=> 26
>> 32 #=> 32
>> "32".to_i(8) #=> 26
>> "32".to_i(10) #=> 32

And, just for completeness, you might need to deal with hexadecimal:

>> 0x32 #=> 50
>> "32".to_i(16) #=> 50

and binary:

>> 0b100000 #=> 32
>> 32.to_s(2) #=> "100000"


When you have a zero in front of your number, Ruby interprets it as an octal(base 8 number).

You syntax error is probably something like this:

ruby-1.9.2-p136 :020 > 08
SyntaxError: (irb):20: Invalid octal digit


If you start a number with 0 (zero), ruby treats it as an octal, so you normally don't want the zero. You'll have to be more specific about the syntax error.


i don't know about syntax errors, but when you prefix a number with zero it means it's octal (base-8)... so 032 is actually 26 in decimal

0

精彩评论

暂无评论...
验证码 换一张
取 消