Funktion hex() in Perl

In der Programmiersprache Perl gibt es die eingebaute Funktion hex().

Funktion hex() konvertiert eine Zahl aus der hexadezimalen Format in десятеричный.

Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

print hex('0xFF');

Das Programm zeigt das 255.

Argumente

Wenn die Funktion hex nicht übertragen, keine Argumente, wird die Funktion arbeitet mit дефолтной Variable $_:

▶ Run
#!/usr/bin/perl

$_ = '0x100';

print hex(); # 256

In diesem Fall, wenn in der Variablen $_ befindet sich undef verwendet und use warnings;, dann wird die Warnung:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Standard-Funktion verwenden hex() ist ein argument übergeben.

Wenn an die Funktion übergeben hex() mehr als ein argument, dann wird der Fehler und die Codeausführung gestoppt wird.

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

Wenn Sie mehrere Werte zu konvertieren, dann können Sie map:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

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

my @dec = map { hex } @hex;

warn Dumper \@dec;

Die Zeichenfolge kann beginnen mit 0x, aber nicht unbedingt notwendig. Die groß - / Kleinschreibung nicht Wert hat.

Hier sind ein paar Beispiele. In diesem Beispiel werden alle Anrufe an die Funktion hex()zurück denselben Wert — Zahl 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');

Funktion kann nicht arbeiten mit gebrochenen hexadezimal-zahlen. Wenn Sie versuchen, zu konvertieren ist die Zahl wird Warnung:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Der Rückgabewert

Funktion hex() immer eine Zahl zurück.

Die offizielle Dokumentation

Hier ist die Ausgabe des Befehls 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".

Verwandte Themen

Andere Artikel