X进制与10进制之间的转换
2008-06-12 01:21
609 查看
Declare @x nvarchar(1024)
Declare @y int
Declare @sys int --x进制
Set @x='30'
Set @sys=21 --@sys=21表示二十一进制
--x进制转换成10进制
;With
T1 As(
Select
X=Stuff(Reverse(@x),1,1,''),
Y=Convert(int,Case Isnumeric(Right(@x,1)) When 0 Then ASCII(Upper(Right(@x,1)))-55 Else Right(@x,1) End*Power(@sys,0)),
L=Convert(int,1)
Union All
Select
X=Stuff(X,1,1,''),
Y=Convert(int,Case Isnumeric(Left(X,1)) When 0 Then ASCII(Upper(Left(X,1)))-55 Else Left(X,1) End*Power(@sys,L)),
L=L+Convert(int,1)
From T1
Where X>''
)
Select [10进制-->X进制]=SUM(Y) From T1
--10进制换成x进制转
Set @y=32
Set @sys=2 --@sys=2表示二进制
;With
T1 As(
Select
X=Convert(int,@y/@sys),
Y=Convert(nvarchar(1024),Case (@y%@sys)/10 When 0 Then Rtrim(@y%@sys) Else Char(@y%@sys%10+65) End),
L=Convert(int,1)
Union All
Select
X=X/@sys,
Y=Convert(nvarchar(1024),Case (X%@sys)/10 When 0 Then Rtrim(X%@sys) Else Char(X%@sys%10+65) End+Y),
L=Convert(int,L+1)
From T1 Where X>0
)
Select Top 1 [x进制-->10进制]=Y From T1 Order By L Desc
结果:
10进制-->X进制
-----------
63
(1 行受影响)
x进制-->10进制
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
100000
(1 行受影响)
Declare @y int
Declare @sys int --x进制
Set @x='30'
Set @sys=21 --@sys=21表示二十一进制
--x进制转换成10进制
;With
T1 As(
Select
X=Stuff(Reverse(@x),1,1,''),
Y=Convert(int,Case Isnumeric(Right(@x,1)) When 0 Then ASCII(Upper(Right(@x,1)))-55 Else Right(@x,1) End*Power(@sys,0)),
L=Convert(int,1)
Union All
Select
X=Stuff(X,1,1,''),
Y=Convert(int,Case Isnumeric(Left(X,1)) When 0 Then ASCII(Upper(Left(X,1)))-55 Else Left(X,1) End*Power(@sys,L)),
L=L+Convert(int,1)
From T1
Where X>''
)
Select [10进制-->X进制]=SUM(Y) From T1
--10进制换成x进制转
Set @y=32
Set @sys=2 --@sys=2表示二进制
;With
T1 As(
Select
X=Convert(int,@y/@sys),
Y=Convert(nvarchar(1024),Case (@y%@sys)/10 When 0 Then Rtrim(@y%@sys) Else Char(@y%@sys%10+65) End),
L=Convert(int,1)
Union All
Select
X=X/@sys,
Y=Convert(nvarchar(1024),Case (X%@sys)/10 When 0 Then Rtrim(X%@sys) Else Char(X%@sys%10+65) End+Y),
L=Convert(int,L+1)
From T1 Where X>0
)
Select Top 1 [x进制-->10进制]=Y From T1 Order By L Desc
结果:
10进制-->X进制
-----------
63
(1 行受影响)
x进制-->10进制
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
100000
(1 行受影响)
相关文章推荐
- X进制与10进制之间的转换
- LSN的10进制和16进制之间的转换
- 36进制与10进制之间的转换
- 16进制 10进制 BCD码之间的转换
- js实现26进制和10进制之间的转换
- java中进行2、8、16、10进制之间的转换
- javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)
- 编程实现36进制和10进制之间的相互转换
- Python 10进制与任意进制之间相互转换(最大为62进制)
- c# 2进制、8进制、10进制、16进制之间的转换
- java中进行2、8、16、10进制之间的转换
- javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)
- 将一个十进制数字转化为x进制/将x进制的字符串转换成10进制
- javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)
- 2011-02-23 00:18 java中进行2、8、16、10进制之间的转换
- 16进制、10进制、BCD码之间的转换
- javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)
- 16进制、10进制、BCD码之间的转换
- javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)