MsgBox % CIDRtoIPv4Range( "23.19.0.0/16" )            ; returns 23.19.0.0-23.19.255.255
MsgBox % CIDRfmIPv4Range( "23.19.0.0-23.19.255.255" ) ; returns 23.19.0.0/16

MsgBox % IPv4toLong( "23.19.0.0" ) ; returns 387121152
MsgBox % IPv4fmLong( 387121152 )   ; returns 23.19.0.0

VarLow  := IPv4toLong( "23.19.0.0" )
VarHigh := IPv4toLong( "23.19.255.255" )

Var := IPv4toLong( "23.19.128.80" ) 

If Var between %VarLow% and %VarHigh%
   MsgBox %Var% is between %VarLow% and %VarHigh%.

; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=1238
CIDRfmIPv4Range( IPV4Range ) {                        ; SKAN | 01-Jan-2014 | goo.gl/JI0kml
Static IP1,IP2,IP3,IP4,IP5,IP6,IP7,IP8
  StringSplit, IP, IPV4Range, .-, %A_Space%`t
  IPDiff := 1 + ( IP8 | ( IP7<<8 ) | ( IP6<<16 ) | ( IP5<<24 ) )
              - ( IP4 | ( IP3<<8 ) | ( IP2<<16 ) | ( IP1<<24 ) )
Return IP1 "." IP2 "." IP3 "." IP4 "/" Round( 32 - ( LN(IPDiff)/LN(2) ) )  
}

CIDRtoIPv4Range( CIDR ) {                             ; SKAN | 01-Jan-2014 | goo.gl/JI0kml
Static IPF1,IPF2,IPF3,IPF4,IPT1,IPT2,IPT3,IPT4
  StringSplit, IPF, CIDR, ./
  LI := ( N := 0xFFFFFFFF >> IPF5 ) | ( IPF4 | ( IPF3<<8 ) | ( IPF2<<16 ) | ( IPF1<<24 ) )
  IPT1 := LI>>24,   IPT2 := LI>>16 & 255,   IPT3 := LI>>8 & 255,   IPT4 := LI & 255
Return IPF1 "."  IPF2 "."  IPF3 "."  IPF4 "-"  IPT1 "."  IPT2 "."  IPT3 "."  IPT4
, ErrorLevel := 1 + N  
}


IPv4fmLong( LI, BigEndian=0 ) {                       ; SKAN | 01-Jan-2014 | goo.gl/JI0kml
Static Octet1,Octet2,Octet3,Octet4
  Octet1 := LI>>24,  Octet2 := LI>>16 & 255,   Octet3 := LI>>8 & 255,   Octet4 := LI & 255   
Return BigEndian=0 ? Octet1 "." Octet2 "." Octet3 "." Octet4    
                   : Octet4 "." Octet3 "." Octet2 "." Octet1                  
}
                
IPv4toLong( IP, BigEndian=0 ) {                       ; SKAN | 01-Jan-2014 | goo.gl/JI0kml
Static Octet1,Octet2,Octet3,Octet4
  StringSplit, Octet, IP, .
Return BigEndian=0 ? ( Octet4 | ( Octet3<<8 ) | ( Octet2<<16 ) | ( Octet1<<24 ) ) 
                   : ( Octet1 | ( Octet2<<8 ) | ( Octet3<<16 ) | ( Octet4<<24 ) )                
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。