032と32を使用すると、Rubyの動作が異なることに気付きました。コードに32ではなく032があると、構文エラーが発生したことがあります。誰かが私にこれを説明できますか?それとも、私のコード自体に本当に何か問題がありますか?
4 に答える
9
表示されている032
のは8進数表現であり、32
10進数です。
>> 032 #=> 26
>> 32 #=> 32
>> "32".to_i(8) #=> 26
>> "32".to_i(10) #=> 32
また、完全を期すために、16進数を処理する必要がある場合があります。
>> 0x32 #=> 50
>> "32".to_i(16) #=> 50
およびバイナリ:
>> 0b100000 #=> 32
>> 32.to_s(2) #=> "100000"
于 2011-04-11T04:03:52.743 に答える
5
数値の前にゼロがある場合、Rubyはそれを8進数(基数8の数値)として解釈します。
構文エラーはおそらく次のようなものです。
ruby-1.9.2-p136 :020 > 08
SyntaxError: (irb):20: Invalid octal digit
于 2011-04-11T04:04:21.337 に答える
4
数値を0(ゼロ)で始める場合、rubyはそれを8進数として扱うため、通常はゼロは必要ありません。構文エラーについてより具体的にする必要があります。
于 2011-04-11T04:02:46.533 に答える
4
構文エラーについてはわかりませんが、数値の前にゼロを付けると、8進数(基数8)になります...したがって、032は実際には10進数で26です。
于 2011-04-11T04:02:58.097 に答える