教你怎樣寫自訂IP地址演算法,自訂ip地址演算法

來源:互聯網
上載者:User

教你怎樣寫自訂IP地址演算法,自訂ip地址演算法

通過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 BEGINDECLARE @S VARCHAR(50)=''WHILE @PartCount>0SELECT @S=@S+CASE WHEN @S>'' THEN @Split ELSE '' END+RTRIM(@Nr/POWER(@NrSystem,@PartCount)),@Nr=@Nr%POWER(@NrSystem,@PartCount),@PartCount=@PartCount-1RETURN @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 BEGINDECLARE @Nr BIGINT=0,@StartLen TINYINT,@StrLen TINYINTSELECT @StrLen=LEN(@Split),@StartLen=1WHILE @PartCount>0SELECT @Nr=@Nr+SUBSTRING(@Str,@StartLen,CHARINDEX(@Split,@Str+@Split,@StartLen)-@StartLen)*POWER(@NrSystem,@PartCount),@StartLen=CHARINDEX(@Split,@Str+@Split,@StartLen)+@StrLen,@PartCount=@PartCount-1RETURN @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*/


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.