- Home ›
- Perl関数のリファレンス ›
- 文字列 ›
- HERE
oct関数
「oct」関数は対象の文字列を8進数/16進数/2進数の数値と見なし、10進数の数値に変換します。
oct oct([EXPR])
対象の文字列を8進数/16進数/2進数の数値と見なし、10進数の数値に変換しま す。 パラメータ: EXPR 対象の文字列 戻り値: 10進数の数値
1番目の引数には対象となる文字列を指定します。省略された場合は変数「$_」が使用されます。関数が呼び出されると、引数に指定した文字列を、文字列の形式に従って8進数/16進数/2進数の数値と見なし10進数の数値に変換して戻り値として返します。
引数に指定する文字列の先頭が「0」で始まる場合は8進数、「0x」で始まる場合は16進数、「0b」で始まる場合は2進数として解釈します。何も付いていない場合も8進数と解釈します。
具体的には次のように記述します。
my $num1 = oct("045"); my $num2 = oct("0xA4"); my $num3 = oct("0b1101"); my $num4 = oct("37");
この場合、「045」は8進数と見なされ10進数の「37」へ、「0xA4」は16進数と見なされ10進数の「164」へ、「0b1101」は2進数と見なされ10進数の「13」へ、「37」は8進数と見なされ10進数の「31」へ変換されます。
※合わせて「hex関数」を参照して下さい。また10進数から8進数などに変換する場合は「sprintf関数」を参照して下さい。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num1 = oct("045"); my $num2 = oct("0xA4"); my $num3 = oct("0b1101"); my $num4 = oct("37"); print "045 -> $num1¥n"; print "0xA4 -> $num2¥n"; print "0b1101 -> $num3¥n"; print "37 -> $num4¥n";
上記を「test12-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
( Written by Tatsuo Ikura )