How do I convert decimal to hexadecimal in Perl?

后端 未结 4 1664
野性不改
野性不改 2020-12-05 17:29

How can I convert a number, $d = 1024, in decimal to 0xFF in hex in Perl?

The d variable needs to be assigned to a different variable and b

相关标签:
4条回答
  • 2020-12-05 17:59

    I put these snippets into Perl files in my $PATH:

    Convert list of decimal numbers into hexadecimal and binary

    for ($i = 0; $i < @ARGV; $i++) {
        printf("%d\t= 0x%x\t= 0b%b\n", $ARGV[$i], $ARGV[$i], $ARGV[$i]);
    }
    

    Convert list of hexadecimal numbers into decimal and binary

    for ($i = 0; $i < @ARGV; $i++) {
        $val = hex($ARGV[$i]);
        printf("0x%x\t= %d\t= 0b%b\n", $val, $val, $val);
    }
    

    Convert list of binary numbers into decimal and hexadecimal

    for ($i = 0; $i < @ARGV; $i++) {
        # The binary numbers you type must start with '0b'
        $val = oct($ARGV[$i]);
        printf("0b%b\t= %d\t= 0x%x\n", $val, $val, $val);
    }
    
    0 讨论(0)
  • 2020-12-05 18:00

    1024 in decimal is not 0xFF in hex. Instead, it is 0x400.

    You can use sprintf as:

    my $hex = sprintf("0x%X", $d);
    
    0 讨论(0)
  • 2020-12-05 18:04

    Caveat: sprintf overflows at 264 ≅ 1019, on 32-bit even already at only 232 ≅ 4×109.

    For large numbers, enable the lexical pragma bigint. as_hex is documented in Math::BigInt.

    use bigint;
    my $n = 2**65;
    print $n->as_hex;   # '0x20000000000000000'
    
    0 讨论(0)
  • 2020-12-05 18:11

    You can use the classical printf().

    printf("%x",$d);
    
    0 讨论(0)
提交回复
热议问题