您的位置:首页 > 其它

十六进制转十进制

2007-03-31 01:24 169 查看
CREATE FUNCTION FN_HEXTOBINARY (@HEX VARCHAR(8))
RETURNS VARCHAR(255)
AS

BEGIN
DECLARE @BASE TINYINT
DECLARE @string VARCHAR(255)
DECLARE @return VARCHAR(255)
DECLARE @div INT
DECLARE @char CHAR(1)
DECLARE @pos INT
DECLARE @digit INT
DECLARE @result varchar(16)
SELECT @string= '0123456789ABCDEF'
SELECT @pos = 1
SELECT @result= ''
SELECT @return= ''
SELECT @base=2

WHILE (@pos<>len(@hex)+1)
BEGIN
IF substring(@hex,@pos,1) NOT in ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F')
BEGIN
RETURN NULL
END
SELECT @digit=charindex(substring(@hex,@pos,1),@string)-1
WHILE (@digit<>0)
BEGIN
SELECT @div=@digit/@base
SELECT @result=convert(varchar(1),(@digit % @base)) + @result
SELECT @digit=@div
END
SELECT @return=@return + CASE WHEN len(@result)<4 THEN replace(space(4-len(@result)) + @result,' ','0') ELSE @result END
SELECT @result=''
SELECT @pos=@pos+1
END
RETURN @return
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: