【发布时间】:2011-06-24 05:39:15
【问题描述】:
我有一个数字 (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”中。
愿意提供建议吗?我正在为此研究拆分功能..
【问题讨论】:
-
你确定你真的需要整个二进制阶段吗?听起来您只想将字符串转换为整数,然后将其解压缩为字节。
-
我得到了一个整数,想转成二进制,然后将每8位作为单独的数字处理,形成一个ip地址(xxx.xxx.xxx.xxx)。
-
.ua 网站上的图书链接几乎可以肯定是非法副本。