Sql server实现十六进制和十进制的转换
2008-02-22 01:06
197 查看
写着玩玩
-- 十六进制转十进制
Create function hextoint(@h varchar(8))
returns bigint
begin
-- select dbo.hextoint(1705)
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
----------
--十进制转十六进制
Create function inttohex(@i bigint)
returns varchar(15)
begin
--declare @i bigint
--set @i=3063457542
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
-- 十六进制转十进制
Create function hextoint(@h varchar(8))
returns bigint
begin
-- select dbo.hextoint(1705)
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
----------
--十进制转十六进制
Create function inttohex(@i bigint)
returns varchar(15)
begin
--declare @i bigint
--set @i=3063457542
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
相关文章推荐
- 关于使用查表法实现十进制到二进制,八进制,十六进制的转换
- 在BASH下简单实现十进制到二进制和十六进制的转换
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- 80x86汇编编程:实现十进制或十六进制向二进制的转换
- C++实现十六进制字符串转换为十进制整数的方法
- 代码实现十进制转换为二进制、十六进制(源码)
- java实现:十六进制转换十进制
- 汇编语言程序设计-十进制转换为十六进制的程序实现
- 用js实现的十进制的颜色值转换成十六进制的代码
- c语言编程实现十进制到十六进制的转换
- PHP实现各进制间的转换 十进制与二进制、八进制、十六进制间的互换
- 用js实现颜色编码十六进制和十进制的转换
- 实现string toHex(int)把一个十进制转换成十六进制。(完全用算法实现)
- 用C++实现十进制到十六进制的两种转换方法
- 用递归函数实现十进制转换为十六进制输出
- 利用sprintf和sscanf实现十六进制和十进制之间的相互转换
- C++实现二进制、八进制、十进制、十六进制的相互转换
- 利用sprintf和sscanf实现十六进制和十进制之间的相互转换
- 利用sprintf和sscanf实现十六进制和十进制之间的相互转换
- 用js实现的十进制的颜色值转换成十六进制的代码