Leser: 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#!/usr/bin/perl use strict; use warnings; # siehe Perl Kochbuch sub dec2bin { my $str = unpack("B32", pack("N", shift)); $str =~ s/^0+(?=\d)//; # remove leading zeros return $str; } # siehe Perl Kochbuch sub bin2dec { return unpack( "N", pack( "B32", substr("0" x 32 . shift, -32 ) )); } sub foo { my $i = shift; # integer in binaer wandeln; Reihenfolge der Bits im String umkehren my $bitstring = reverse dec2bin($i); # damit jeweils 8 Bit vom Ende genommen werden, wurde die Bitfolge # umgekehrt, damit der Regex jeweils 8 Bit vom Anfang nehmen kann. # Sollten weniger als 8 Bit übrig bleiben, wird dieses Teilstueck # auch genommen. my @parts = $bitstring =~ m/(..{1,7})/g; # jeden Teilstring nun wieder umkehren und in Dezimal wandeln # dabei auch die Reihenfolge der Teile wieder umkehren @parts = reverse map { bin2dec(scalar reverse $_) } @parts; # Ergebnisliste liefern return @parts; } { # perldoc -f local; perldoc perlvar local $,=$/; # gebe Ergebnis aus print foo( 4436 ); }
Guest williich brauche das um ein serielles display anzusteuern!
1
2
3
4
$ perl -wle '$hi = 4436 >> 8; print $hi'
17
$ perl -wle '$lo = 4436 & 0b0000000011111111; print $lo'
84