Fungsi hex() di Perl

Dalam bahasa pemrograman Perl memiliki fungsi built-in hex().

Fungsi hex() mengkonversi nomor dari format heksadesimal ke desimal.

Berikut ini sebuah contoh:

▶ Run
#!/usr/bin/perl

print hex('0xFF');

Program akan menampilkan 255.

Argumen

Jika fungsi hex tidak tidak ada argumen yang diberikan, fungsi bekerja dengan default variabel $_:

▶ Run
#!/usr/bin/perl

$_ = '0x100';

print hex(); # 256

Dalam hal ini jika variabel $_ adalah undef dan digunakan use warnings;, akan peringatan:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Standar menggunakan hex() adalah untuk lulus satu argumen.

Jika fungsi transfer hex() lebih dari satu argumen, itu akan menjadi sebuah kesalahan dan kode eksekusi akan dihentikan.

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

Jika anda perlu untuk mengubah beberapa nilai-nilai, anda dapat menggunakan map:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @hex = ('0xA', '0xB', '0x11');

my @dec = map { hex } @hex;

warn Dumper \@dec;

String dapat mulai dengan 0x, tetapi tidak harus. Kasus yang sensitif terhadap nilai-nilai yang tidak memiliki.

Berikut ini adalah beberapa contoh. Dalam contoh ini, semua panggilan ke fungsi hex()kembali sama nilai — nomor 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');

Fungsi ini tidak dapat bekerja dengan pecahan bilangan heksadesimal. Ketika anda mencoba untuk mengkonversi tersebut jumlah peringatan:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Nilai kembali

Fungsi hex() selalu mengembalikan jumlah.

Dokumentasi resmi

Berikut ini adalah output dari perintah 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".

Topik terkait

Artikel lainnya