记录一些经验

学习,生活

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

用sql server进行10进制和16进制转换 hextoint inttohex

作者: szliszt,  出处:Blog, 责任编辑: 李书琴, 
2007-11-07 09:27
  本文详细介绍了用sql server进行10进制和16进制转换的技巧……
create    function hextoint(@h varchar(8))
returns bigint 
begin

declare @r bigint  
set @r=0

declare @i bigint
set @i=1

while @i<=len(@h)
begin
set @r=@r+

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

set @i=@i+1

end

return @r


end


go




create   function inttohex(@i int)
returns varchar(15) 
begin


--declare @i int
--set @i=11259375

declare @r varchar(10)  
set @r=''


while @i/16>0
begin


set @r=
(case 
when (@i % 16)<=9 then convert(varchar(1),@i % 16)
when (@i % 16)=10 then 'A'
when (@i % 16)=11 then 'B'
when (@i % 16)=12 then 'C'
when (@i % 16)=13 then 'D'
when (@i % 16)=14 then 'E'
when (@i % 16)=15 then 'F'
end)
+@r

--select @r,@i

set @i=@i/16


end

--select @r,@i


if @i>0 
set @r=(case 
when (@i % 16)<=9 then convert(varchar(1),@i % 16)
when (@i % 16)=10 then 'A'
when (@i % 16)=11 then 'B'
when (@i % 16)=12 then 'C'
when (@i % 16)=13 then 'D'
when (@i % 16)=14 then 'E'
when (@i % 16)=15 then 'F'
end)+@r

-- select @r


return @r


end
go
posted on 2007-11-29 15:33  将飞  阅读(4095)  评论(0)    收藏  举报