需求:输入网段地址,输出网络地址和广播地址
输入:
101.132.10.0/24
输出:
网络地址:101.132.10.0
广播地址:101.132.10.255
有了这两个地址,就可以把所有可用ip求出来了
hivesql:
-- 网络地址 整数形式
select cast(conv(CONCAT(lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[0] as bigint),10, 2),8,"0") ,lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[1] as bigint),10, 2),8,"0") ,lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[2] as bigint),10, 2),8,"0") ,lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[3] as bigint),10, 2),8,"0") )
,2, 10) as bigint) & cast(conv(rpad(rpad( "",cast(split("101.132.10.0/24","/")[1] as bigint),"1"),32,"0"),2, 10) as bigint)
-- 广播地址 整数形式
select (cast(conv(CONCAT(lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[0] as bigint),10, 2),8,"0") ,lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[1] as bigint),10, 2),8,"0") ,lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[2] as bigint),10, 2),8,"0") ,lpad(conv(cast(split(split("101.132.10.0/24","/")[0],"\\.")[3] as bigint),10, 2),8,"0") )
,2, 10) as bigint) & cast(conv(rpad(rpad( "",cast(split("101.132.10.0/24","/")[1] as bigint),"1"),32,"0"),2, 10) as bigint))
+ pow(2, 32 - split("101.132.10.0/24","/")[1] ) - 1