perl地址转换
#!/usr/bin/perl -w
#### 將十進制數轉換成8為二進制
sub dectobin {
? ? substr(unpack("B31",pack("N",shift)) , -8);
}
#### 將32位二進制轉換成十進制
sub bintodec {
? ? unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
#### 將二進制表示的 IP/子網掩碼轉換成十進制形式
sub ipmask_bin2dec {
? ? my $prefix = "";
? ? my $result;
? ? map { $result .= $prefix . &bintodec($_); $prefix = ".";
? ? } split (/\./,shift);
? ? return $result;
}
#### 將十進制表示的 IP/子網掩碼轉換成二進制形式
sub ipmask_dec2bin {
? ? my $prefix = "";
? ? my $result;
? ? map { $result .= $prefix . &dectobin($_); $prefix = ".";
? ? } split (/\./,shift);
? ? return $result;
}
#### 將 CIDR 表示的子網掩碼轉換成十進制形式
sub ipmask_cidr2dec {
? ? my $cidr_num = shift();
? ? return if ($cidr_num < 0 || $cidr_num > 32);
? ? (my $mask = 1 x $cidr_num . 0 x (32-$cidr_num)) =~
? ? ? ? s/(\d{8})(\d{8})(\d{8})(\d{8})/$1.$2.$3.$4/;
print "#####$mask####\n";
? ? return &ipmask_bin2dec($mask);
}
my $dec_ip = "192.168.2.1";
my $dec_mask = "255.255.255.128";
my $cidr_num = 25;
#my $bin_ip = &ipmask_dec2bin($dec_ip);
#my $bin_mask = &ipmask_dec2bin($dec_mask);
my $bin_mask2 = &ipmask_cidr2dec($cidr_num);
my $test = &dectobin(32);
print "Decimal IP: $dec_ip\n";
print "Binary IP: $bin_ip\n";
print "Decimal Netmask: $dec_mask\n";
print "Binary Netmask: $bin_mask\n";
print "CIDR Netmask: $cidr_num = $bin_mask2\n";
#### 將十進制數轉換成8為二進制
sub dectobin {
? ? substr(unpack("B31",pack("N",shift)) , -8);
}
#### 將32位二進制轉換成十進制
sub bintodec {
? ? unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
#### 將二進制表示的 IP/子網掩碼轉換成十進制形式
sub ipmask_bin2dec {
? ? my $prefix = "";
? ? my $result;
? ? map { $result .= $prefix . &bintodec($_); $prefix = ".";
? ? } split (/\./,shift);
? ? return $result;
}
#### 將十進制表示的 IP/子網掩碼轉換成二進制形式
sub ipmask_dec2bin {
? ? my $prefix = "";
? ? my $result;
? ? map { $result .= $prefix . &dectobin($_); $prefix = ".";
? ? } split (/\./,shift);
? ? return $result;
}
#### 將 CIDR 表示的子網掩碼轉換成十進制形式
sub ipmask_cidr2dec {
? ? my $cidr_num = shift();
? ? return if ($cidr_num < 0 || $cidr_num > 32);
? ? (my $mask = 1 x $cidr_num . 0 x (32-$cidr_num)) =~
? ? ? ? s/(\d{8})(\d{8})(\d{8})(\d{8})/$1.$2.$3.$4/;
print "#####$mask####\n";
? ? return &ipmask_bin2dec($mask);
}
my $dec_ip = "192.168.2.1";
my $dec_mask = "255.255.255.128";
my $cidr_num = 25;
#my $bin_ip = &ipmask_dec2bin($dec_ip);
#my $bin_mask = &ipmask_dec2bin($dec_mask);
my $bin_mask2 = &ipmask_cidr2dec($cidr_num);
my $test = &dectobin(32);
print "Decimal IP: $dec_ip\n";
print "Binary IP: $bin_ip\n";
print "Decimal Netmask: $dec_mask\n";
print "Binary Netmask: $bin_mask\n";
print "CIDR Netmask: $cidr_num = $bin_mask2\n";
總結
- 上一篇: 简单介绍Fedora 8飞信安装及解压
- 下一篇: pack unpakc