Perlで10進IPから普通の255.255.255.255にするにわ?

[上に] [前に] [次に]
やまま [E-Mail] 2000/03/12(日) 13:19:32
10進IP(3533813402)みたいなのを、普通の210.161.182.154
に変換するにはどうすればいいでしょうか?

10進IPに変換するやつは、
$target =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/;
$jusin = $1*16777216+$2*65536+$3*256+$4;
print"10進IP: $jusin";
で、できます

しかし、10進IPから変換するのは、いくら探しても
見つからないし、

それと、HOSTからIPに変換するやつは、
$addr = gethostbyname($target);
$addr = sprintf("%u.%u.%u.%u", unpack("C*", $addr));
print "IP: $addr";
でした。

お願いします。
あと、Perl5です

SHUICHI.T [HomePage] 2000/03/12(日) 18:56:10
下のように自分で計算した方がいいですね。

$d0 = 3533813402;

$d1 = $d0 % 256;
$a2 = ($d0-$d1) / 256;
$d2 = $a2 % 256;
$a3 = ($a2-$d2) / 256;
$d3 = $a3 % 256;
$a4 = ($a3 - $d3) / 256;
$d4 = $a4 % 256;

$addr = "$d4.$d3.$d2.$d1";
print "$addr\n";#結果:"210.161.182.154"

Aurai [E-Mail] 2000/03/12(日) 20:18:05
こんなのとか
#ビット演算久しぶり

$ip = (($ip & 0xFF000000) >> 24).'.'.
      (($ip & 0xFF0000) >> 16).'.'.
      (($ip & 0xFF00) >> 8).'.'.
      ($ip & 0xFF);
print "$ip\n";

やまま [E-Mail] 2000/03/12(日) 20:52:21
[[解決]]
ありがとうございました、うまくいきました
バンザイ

[上に] [前に] [次に]