您好,欢迎访问一九零五行业门户网

教你怎样写自定义IP地址算法

通过ip地址可以看到算法规律,写成自定义ip地址,也可以把ip地址转为自定格式的ip地址。也可以用于加密一些明文数字。以下写正反算法(以1次方为最小单位): use tempdbgoif object_id('fn_nrtochar') is not null drop function fn_nrtochargo/*************
通过ip地址可以看到算法规律,写成自定义ip地址,也可以把ip地址转为自定格式的ip地址。也可以用于加密一些明文数字。以下写正反算法(以1次方为最小单位):
use tempdbgoif object_id('fn_nrtochar') is not null drop function fn_nrtochargo/****************************************************************************************************************************************************************%%函数名:fn_nrtochar%%功能:把数字改为字符****************************************************************************************************************************************************************%%编写:roy 2014-12-09****************************************************************************************************************************************************************/create function fn_nrtochar ( @nr bigint ,@nrsystem bigint=168 --进制 ,@split varchar(2)='**' --分隔符 ,@partcount bigint=5 --分段数)returns varchar(50)as begin declare @s varchar(50)='' while @partcount>0 select @s=@s+case when @s>'' then @split else '' end+rtrim(@nr/power(@nrsystem,@partcount)),@nr=@nr%power(@nrsystem,@partcount),@partcount=@partcount-1 return @sendgoif object_id('fn_chartonr') is not null drop function fn_chartonrgo/****************************************************************************************************************************************************************%%函数名:fn_chartonr%%功能:把字符改为数字****************************************************************************************************************************************************************%%编写:roy 2014-12-09****************************************************************************************************************************************************************/create function fn_chartonr ( @str varchar(50) ,@nrsystem bigint=168 --进制 ,@split varchar(2)='**' --分隔符 ,@partcount bigint=5 --分段数)returns bigintas begin declare @nr bigint=0,@startlen tinyint,@strlen tinyint select @strlen=len(@split),@startlen=1 while @partcount>0 select @nr=@nr+substring(@str,@startlen,charindex(@split,@str+@split,@startlen)-@startlen)*power(@nrsystem,@partcount),@startlen=charindex(@split,@str+@split,@startlen)+@strlen,@partcount=@partcount-1 return @nrendgo--测试1(以ip地址为例)select dbo.fn_chartonr('192.168.0.1',256,'.',4)select dbo.fn_nrtochar(827452293376,256,'.',4)/*827452293376192.168.0.1*/go--测试2declare @i bigint=168select power(@i,5)--133827821568select dbo.fn_chartonr('167**16**1**6**07',default,default,default)select dbo.fn_nrtochar(22361996620824,default,default,default)/*22361996620824167**16**1**6**7*/
其它类似信息

推荐信息