Taking that into account, the following will do what you want:
Output:use strict; my $debug = 1; my $dec= 254; print "$dec\n"; print shift_left($dec) ; sub dec2bin { my $str = unpack("B32", pack("N", shift)); $str =~ s/^0+(?=\d)//; # otherwise you'll get leading zeros print "$str\n" if $debug; return $str; } sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); } sub shift_left { my $bin_reversed = reverse dec2bin(shift); chop $bin_reversed; print ' ' . reverse ($bin_reversed) . '0' . "\n" if $debug; return bin2dec(reverse ($bin_reversed) . '0'); }
The bin2dec and dec2bin routines are from the Perl Cookbook (recipe 2.4).254 11111110 11111100 252
CountZero
A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James
In reply to Re: Decimal to Hexadecimal conversion and extraction MSB
by CountZero
in thread Decimal to Hexadecimal conversion and extraction MSB
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |