0

在 Ruby on Rails 应用程序中,我们有一些存储为整数的详细信息,但在我们尝试转换为字符串时被解释为十六进制。

例如

> 0123.to_s
=> 83

有没有办法将值视为整数,即使它是 Ruby 视为十六进制的格式。如果没有,我们只需将数据库字段更改为 varchar!

4

1 回答 1

8

实际上,这不是十六进制,而是八进制。如果您不想要这种行为,请不要在代码中的整数文字上放置前导零:

irb(main):001:0> 0123         # octal literal
#=> 83

irb(main):002:0> 0x123        # hex literal
#=> 291

irb(main):003:0> 123          # base-10 literal
#=> 123

irb(main):004:0> "0123".to_i  # Converting string to int defaults to base 10
#=> 123

如果出现前导零是因为您使用 Ruby 使用 printf 创建对齐的 Ruby 代码,如下所示:

irb(main):008:0> "%04i" % 123
#=> "0123"

…然后使用空格而不是零填充:

irb(main):009:0> "%4i" % 123
#=> "  123"
于 2012-04-05T16:16:34.583 回答