X進数の数値リテラルほか
リファレンスのなぞり書き。
X進数の数値リテラル
接頭辞をつけることで10進数以外の表記でリテラルを記述できる。 接頭辞と整合的でない入力が続いた場合はエラーを返す。
16進数 => 接頭辞0x
0x10 # => 16 0x1g # => SyntaxError
2進数 => 接頭辞0b
0b10 # => 2 0b12 # => SyntaxError
8進数 => 接頭辞0o or 0
0o10 # => 8 0o19 # => SyntaxError 010 # => 8 019 # => SyntaxError
String#hex
レシーバを16進数表記とみなして、相当する値をintegerで返す。
'10'.hex # => 16
16進数として認識できる文字がない場合は0を返す。
''.hex # => 0
レシーバに含まれる文字は以下のいずれかとして解釈される。
- 16進数の数値部分: [0-9a-fA-F]
- 16進数の数値以外の部分: 戻り値に影響しない。
- 接頭辞
0x
- (ex.)
'0x10'.hex # => 16
- (ex.)
- 数字区切りとしてのアンダーバー
- (ex.)
'1_0_'.hex # => 16
- (ex.)
- 接頭辞
- 16進数でない文字: その文字以降は16進数として認識されない。
- (ex.)
'10g1'.hex # => 16
- (ex.)
'g'.hex # => 0
- (ex.)
'_10'.hex # => 0
- (ex.)
'1__0'.hex # => 1
- (ex.)
String#oct
String#hexの8進数版。
String#to_i
String#to_i(base = 10) -> Integer
- 引数baseを基数とする数値表現としてレシーバを解釈して、数値を返す。
- String#hexはString#to_i(8)と同じ。
- baseを0と指定するとprefixから基数を判断する。prefixがない場合は10進数として解釈する。