Chức năng hex() trong Perl

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

Chức năng hex() chuyển đổi một số từ lục phân định dạng chữ số thập phân.

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

▶ Run
#!/usr/bin/perl

print hex('0xFF');

Chương trình sẽ hiển thị 255.

Lập luận

Nếu các chức năng hex không được 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

$_ = '0x100';

print hex(); # 256

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 = hex();
Use of uninitialized value $_ in hex at script.pl line 6.

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

Nếu các chức năng chuyển hex() 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 hex 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 @hex = ('0xA', '0xB', '0x11');

my @dec = map { hex } @hex;

warn Dumper \@dec;

Chuỗi có thể bắt đầu với 0x, nhưng không nhất thiết. Trường hợp nhạy cảm giá trị được không có.

Ở đây là một số ví dụ. Trong ví dụ này, tất cả các cuộc gọi đến các chức năng hex()trở lại cùng, giá trị của các — số 2748.

▶ Run
#!/usr/bin/perl

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

say hex('0xABC');
say hex('0XABC');
say hex('0xabc');
say hex('XABC');
say hex('xABC');
say hex('abc');
say hex('AbC');

Một chức năng không thể làm việc với phân lục phân số. Khi bạn cố gắng để chuyển như vậy số của cảnh báo:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print hex('0x10.8');
Illegal hexadecimal digit '.' ignored at script.pl line 6.
16

Trở lại giá trị

Chức năng hex() 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 hex:

    hex EXPR
    hex     Interprets EXPR as a hex string and returns the corresponding
            numeric value. If EXPR is omitted, uses $_.

                print hex '0xAf'; # prints '175'
                print hex 'aF';   # same
                $valid_input =~ /\A(?:0?[xX])?(?:_?[0-9a-fA-F])*\z/

            A hex string consists of hex digits and an optional "0x" or "x"
            prefix. Each hex digit may be preceded by a single underscore,
            which will be ignored. Any other character triggers a warning
            and causes the rest of the string to be ignored (even leading
            whitespace, unlike "oct"). Only integers can be represented, and
            integer overflow triggers a warning.

            To convert strings that might start with any of 0, "0x", or
            "0b", see "oct". To present something as hex, look into
            "printf", "sprintf", and "unpack".

Chủ đề liên quan

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