기능 oct() 에서는 Perl

에서는 Perl 프로그래밍 언어가 내장된 기능 oct().

기능 oct() 로 변환하수에서 진수 시스템을 구분해서 사용하는 경우가 있습니다 하지만 이 함수에 변환할 수 있는 번호에서 진수를 시스템 에서 이진법.

예를 들어 다음과 같습니다.

▶ Run
#!/usr/bin/perl

use feature qw(say);

say oct('10'); # 8
say oct('0x10'); # 16
say oct('0b10'); # 2

인수

는 경우 기능 oct 주어지지 아니 인수,함수 작품과 함께 기본 변수 $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

print oct(); # 83

이 경우에는 경우는 변수 $_undef 고 사용 use warnings;것,경고:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $dec = oct();
Use of uninitialized value $_ in oct at script.pl line 6.

표준을 사용하여 oct() 은 그것을 전달하는 단일 인수입니다.

는 경우 전송 기능 oct() 하나 이상의 인수할 수 있는 오류 및 코드 실행 중단될 것입니다.

Too many arguments for oct at script.pl line 3, near "2)"
Execution of script.pl aborted due to compilation errors.

변환해야 하는 경우 여러 값을 사용할 수 있습니다 map:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @oct = (100, 200, 300);

my @dec = map { oct } @oct;

warn Dumper \@dec;

의 경우 함수가 전달된 문자열로 시작하는 0x 또는 0X,기능 oct() 해석하고 이 문자열로 번호법 표기하고 반환합 이 번호는 구분해서 사용하는 경우가 있습니다

그러나 문자열로 시작하 0bOB,다음 ord() 을 고려인 번호 에서 이진수 표기와 반환을 그것의 소수의 표현입니다.

는 경우에 oct() 을 통과 수있는 캐릭터가 없 에 포함된 숫자의 범위에서 07,다음 oct() 반환됩니다 0지만,포함 use warnings; 것입니다 경고:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

say oct(90210);
Illegal octal digit '9' ignored at script.pl line 7.
0

기능 oct() 작동하지 않을 수 있으로 분수 값:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

say oct('10.7');
say oct('0X10.F');
say oct('0B10.11');
8
16
2
Illegal hexadecimal digit '.' ignored at script.pl line 8.
Illegal binary digit '.' ignored at script.pl line 9.

반환 값

기능 oct() 항상 수를 반환합니다.

공식적인 문서

여기에 출력하는 명령의 perldoc -f oct:

    oct EXPR
    oct     Interprets EXPR as an octal string and returns the corresponding
            value. (If EXPR happens to start off with "0x", interprets it as
            a hex string. If EXPR starts off with "0b", it is interpreted as
            a binary string. Leading whitespace is ignored in all three
            cases.) The following will handle decimal, binary, octal, and
            hex in standard Perl notation:

                $val = oct($val) if $val =~ /^0/;

            If EXPR is omitted, uses $_. To go the other way (produce a
            number in octal), use "sprintf" or "printf":

                my $dec_perms = (stat("filename"))[2] & 07777;
                my $oct_perm_str = sprintf "%o", $perms;

            The "oct" function is commonly used when a string such as 644
            needs to be converted into a file mode, for example. Although
            Perl automatically converts strings into numbers as needed, this
            automatic conversion assumes base 10.

            Leading white space is ignored without warning, as too are any
            trailing non-digits, such as a decimal point ("oct" only handles
            non-negative integers, not negative integers or floating point).

관련 주제

다른 기사