Print a given integer number in the binary, octal, and hexadecimal representations.
On an integer object, call the basemethod with the corresponding number:
say 42.base(2); # 101010
say 42.base(8); # 52
say 42.base(16); # 2A
Alternatively, use the fmt
method, which is defined for integers and accepts the formatting string in the printfformat:
my $int = 42;
say $int.fmt('Hex: %x'); # Hex: 2a
say $int.fmt('Oct: %o'); # Oct: 52
say $int.fmt('Bin: %b'); # Bin: 101010
In Perl 6, there also exists a conventional function printf
, which works similarly to how it behaves in other programming languages: It needs a formatting string and a list of values to be substituted to the %
-placeholders.
my $int = 42;
printf("Hex: %0x\n", $int); # Hex: 2a
printf("Oct: %o\n", $int); # Oct: 52
printf("Bin: %b\n", $int); # Bin: 101010
The above examples print the values without their radix prefixes. To add a prefix, use the %#
forms:
printf("Hex: %#x\n", $int); # Hex: 0x2a printf("Oct: %#o\n", $int);Â # Oct: 052 (not 0o52!) printf("Bin: %#b\n", $int);Â # Bin: 0b101010
One thought on “📘 Presenting integers as binary, octal, and hex using Perl 6”