以下是一个关于ASP实现IP地址分段计算的实例代码分享,大家可以自己试试,希望能够帮助到大家。
function IPDeCode(EIP){
var Ip1,Ip2,Ip3,Ip4;
Ip1=moveByteR(EIP & 0xff000000,3);
Ip2=moveByteR(EIP & 0x00ff0000,2);
Ip3=moveByteR(EIP & 0x0000ff00,1);
Ip4=EIP & 0x000000ff;
return Ip1 + "." + Ip2 + "." + Ip3 + "." + Ip4;
}
function moveByteL(num,bytenum){
return num <<=(bytenum*8)
}
function moveByteR(num,bytenum){
return num >>>=(bytenum*8)
}
在VBs中没有位操作,这样在一个页面中用到了js和vbs,并不好,如果用vbs也可以,不过罗嗦了一些,而且有一点注意,如果在vbs中split("202.102.29.6","."),会得到202,102,29三个数,得不到最后一个6,所以需要将ip换成split("202.102.29.6" & ".",".")
我用vbs做的,由于没有位操作,所以做得比较麻烦
<%
function ip2int(ipstr)
dim iptemp,max
iptemp=split(ipstr&".",".")
max=ubound(iptemp)
if max <> 4 then
exit function
end if
dim a,b,i
a="&H"
for i=0 to 3
b=Hex(iptemp(i))
if len(b)=1 then
b="0"&b
end if
a=a&b
next
ip2int=CLng(a)
end function
function int2ip(ip)
dim iptemp,a,ipstr,i,length
iptemp=Hex(ip)
length=8 - len(iptemp)
for i=1 to length
iptemp="0" & iptemp
next
a=left(iptemp,2)
a="&H" & a
i=CInt(a)
a=CStr(i)
ipstr=a & "."
a=mid(iptemp,3,2)
a="&H" & a
i=CInt(a)
a=CStr(i)
ipstr=ipstr & a & "."
a=mid(iptemp,5,2)
a="&H" & a
i=CInt(a)
a=CStr(i)
ipstr=ipstr & a & "."
a=right(iptemp,2)
a="&H" & a
i=CInt(a)
a=CStr(i)
ipstr=ipstr & a
int2ip=ipstr
end function
dim testIP,testInt
testIP="202.102.29.6"
testInt=ip2int(testIP)
response.write testIP & " will be encoded to " & testInt & "
"
response.write testIP & " will be dencoded to " & int2ip(testInt) & "
"
%>