Chức năng oct() trong Perl

Perl ngôn ngữ đã được tích hợp trong chức năng oct().

Chức năng oct() chuyển đổi một số từ bát hệ thống số thập phân. Nhưng ngay cả hàm này có thể chuyển đổi một số trong số thập phân hệ thống và từ nhị phân và lục phân.

Đây là một ví dụ:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Lập luận

Nếu các chức năng oct không cho không có lý luận, các chức năng làm việc với định biến $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

print oct(); # 83

Trong trường hợp đó, nếu biến $_undef và sử dụng use warnings;, sẽ cảnh báo:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Tiêu chuẩn bằng cách sử dụng oct() là để vượt qua nó một cuộc tranh luận.

Nếu các chức năng chuyển oct() nhiều hơn một cuộc tranh luận, nó sẽ là một lỗi mã thực hiện sẽ được dừng lại.

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

Nếu bạn cần để chuyển đổi nhiều giá trị, bạn có thể sử dụng map:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

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

my @dec = map { oct } @oct;

warn Dumper \@dec;

Nếu các chức năng được thông qua một chuỗi đó bắt đầu với 0x hoặc 0X, các chức năng oct() giải thích chuỗi này như một số thập phân, ký hiệu và trả về con số này trong thập phân.

Nhưng nếu các chuỗi bắt đầu với 0b hoặc OB, sau đó ord() coi các đường dây số trong ký hiệu nhị phân và trở lại thập phân của nó đại diện.

Nếu trong oct() qua số trong đó có một nhân vật mà không được bao gồm trong phạm vi của con số từ 0 để 7, sau đó oct() sẽ trở lại 0, nhưng bao gồm use warnings; sẽ cảnh báo:

▶ 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

Chức năng oct() không thể làm việc với phân giá trị:

▶ 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.

Trở lại giá trị

Chức năng oct() luôn luôn trở về một con số.

Tài liệu chính thức

Đây là kết quả của sự chỉ huy 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).

Chủ đề liên quan

Các bài viết khác