• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

通过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(@NrSys<a>本文来源gao($daima.com搞@代@#码8网^</a>tem,@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*/

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:教你怎样写自定义IP地址算法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址