我有一个数字(3232251030)需要从十进制转换为二进制。一旦我得到二进制文件,我需要将它的 8 位分成数字,显示一个 IP 地址。
将十进制转换为二进制很简单:
sub dec2bin { my $str = unpack("B32", pack("N", shift)); $str =~ s/^0+(?=\d)//; # otherwise you'll get leading zeros return $str; }
sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); }
e.g. $num = bin2dec('0110110'); # $num is 54 $binstr = dec2bin(54); # $binstr is 110110
参考:http ://www.perlmonks.org/?node_id=2664
所以现在,我需要从二进制文件中拆分出 8 位数字并将其保存为构成 IP 地址的数字。
$num = dec2bin('3232251030');
($num 是二进制的“11000000 10101000 01000100 00001110”)
我需要将每个 8 位“11000000 10101000 01000100 00001110”拆分并保存为“192.168.60.150”。
愿意建议吗?我正在为此研究拆分功能..