asp下IP地址分段计算函数

IP地址分段计算

<script language="JScript" Runat="Server">

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)

}

</script>

在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 <font color=red>" & testInt & "</font><br>"

response.write testIP & " will be dencoded to <font color=red>" & int2ip(testInt) & "</font><br>"

%>