#!/usr/bin/perl --
use strict; use warnings; use Data::Dump;
my @rand1 = qw( 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 1 );
my $bin = arraystring (@rand1);
my $dec = stringdecimal($bin);
my $hex = sprintf("0x%x", $dec);
my $ex = b32hex(@rand1);
dd \@rand1, $bin, $dec, $hex, $ex;
sub stringdecimal {
return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
sub arraystring {
my $string = join('', @_);
return $string;
}
sub b32hex {
'0x'. unpack 'H*', pack("B32", substr("0" x 32 . join('',@_), -32)
+)
}
__END__
(
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1],
"0101010101110110001",
175025,
"0x2abb1",
"0x0002abb1",
)
|