0

Ruby on Rails アプリでは、整数として格納されている詳細がいくつかありますが、文字列に変換しようとすると 16 進数として解釈されます。

例えば

> 0123.to_s
=> 83

Rubyが16進数と見なす形式であっても、値を整数として扱う方法はありますか? 存在しない場合は、データベース フィールドを varchar に変更します。

4

1 に答える 1

8

実は、これは 16 進数ではなく、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 に答える