sql實現10進位制16進位制轉換函式

iDotNetSpace發表於2010-08-13
--10進位制轉16進位制
create function inttohex(@int10 int)
returns varchar(8)
begin
    
declare @int10 int
    
declare @str16 nvarchar(8)
    
set @str16=''

    
if(@int10>0)
    
begin
        
while @int10>0
        
begin
            
set @str16=substring('0123456789ABCDEF',@int10%16+1,1)+@str16
            
set @int10=@int10/16
        
end
    
end
        
else
        
begin
            
set @str16='0'
        
end
    
return @str16
end


--16進位制轉10進位制
create function hextoint(@str16 varchar(8)) 
returns int 
begin 

    
declare @int10 int 
    
declare @i int     
    
set @int10=0 
    
set @i=1 

    
while @i<=len(@str16
    
begin 
        
set @int10=@int10+
            
convert(int,
                (
case   when substring(@str16,@i,1)<='9' then substring(@str16,@i,1)
                    
when substring(@str16,@i,1)<='A' then '10'
                    
when substring(@str16,@i,1)<='B' then '11'
                    
when substring(@str16,@i,1)<='C' then '12'
                    
when substring(@str16,@i,1)<='D' then '13'
                    
when substring(@str16,@i,1)<='E' then '14'
                    
when substring(@str16,@i,1)<='F' then '15' end )) * power(16,len(@str16)-@i
        
set @i=@i+1
    
end
    
return @int10 
end

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-670935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章