为什么 Ruby 中的 032 与 32 不同?

发布于 2024-10-31 12:15:52 字数 93 浏览 2 评论 0原文

我注意到 Ruby 在使用 032 和 32 时表现不同。我曾经因为代码中使用 032 而不是 32 而出现语法错误。有人可以向我解释一下吗?或者我的代码本身真的有问题吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜中书 2024-11-07 12:15:52

您看到的是 032 是八进制表示形式,而 32 是十进制表示形式:

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

并且,为了完整起见,您可能需要处理十六进制:

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

和二进制:

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

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"
趴在窗边数星星i 2024-11-07 12:15:52

当您的数字前面有一个零时,Ruby 会将其解释为八进制(以 8 为基数的数字)

你的语法错误可能是这样的:

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

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
污味仙女 2024-11-07 12:15:52

如果您以 0(零)开头的数字,Ruby 会将其视为八进制,因此您通常不需要零。您必须更具体地了解语法错误。

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.

坏尐絯℡ 2024-11-07 12:15:52

我不知道语法错误,但是当你在数字前面加上零时,这意味着它是八进制(以8为底)......所以032实际上是十进制的26

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文