10進ドット記法と10進の変換
IPアドレスの表記を入れ替える。
もとは1ライナーで作成
dec2dot.awk
��3232235777を192.168.1.1に)
awk -f dec2dot.awk 3232235777
dot2dec.awk
��192.168.1.1を3232235777に)
awk -f dot2dec.awk 192.168.1.1
おまけ
10進ドット記法を十六進に
awk 'BEGIN{split(ARGV[1],arr,"."); printf("0x%x%x%x%x¥n",arr[1],arr[2],arr[3],arr[4]) }' 192.168.1.1
もとは1ライナーで作成
dec2dot.awk
��3232235777を192.168.1.1に)
BEGIN{
addr=ARGV[1];
print dec2dot(addr)
}
#function dec2dot(decaddr){
#
#sprintf ("%i.%i.%i.%i¥n",
# decaddr/(16777216),
# decaddr%(16777216)/(65536),
# decaddr%(16777216)%(65536)/(256),
# decaddr%(16777216)%(65536)%(256)/(1))
#}# たぶん大丈夫だろうけど書式による丸め使ってて
# 曖昧になる可能性があったので修正
#うーんなんか商に少数点以下が付いたりしておかしい。修正
function dec2dot(decaddr ,oct){
oct[4]=(((decaddr%16777216)%65536)%256)/1
oct[3]=(((decaddr-oct[4])%16777216)%65536)/256
oct[2]=((decaddr-oct[3]*256-oct[4])%16777216)/65536
oct[1]=(decaddr-oct[2]*65536-oct[3]*256-oct[4])/16777216
#検算用
#print oct[4]
#print oct[3]
#print oct[2]
#print oct[1]
#print "**"
return sprintf("%i.%i.%i.%i",oct[1],oct[2],oct[3],oct[4])
}
awk -f dec2dot.awk 3232235777
dot2dec.awk
��192.168.1.1を3232235777に)
BEGIN{
split(ARGV[1],arr,".");
printf("%.0f¥n",arr[1]*256^3+arr[2]*256^2+arr[3]*256+arr[4])
}
awk -f dot2dec.awk 192.168.1.1
おまけ
10進ドット記法を十六進に
awk 'BEGIN{split(ARGV[1],arr,"."); printf("0x%x%x%x%x¥n",arr[1],arr[2],arr[3],arr[4]) }' 192.168.1.1
JUGEMテーマ:コンピュータ
コメント
コメントを投稿
「コメントを投稿できるユーザー」の範囲は変更される可能性があります。