二進位制轉為十進位制函式:
create function bin2dec(@strbin varchar(32))
returns int ----
只支援最多
31位長二進位制字串的解析 as
begin
declare @decvalue as int --
十進位制值
declare @binlen as tinyint --
二進位制字串長度
declare @index as tinyint --
處理二進位制字串長度的索引
declare @currbit as char(1) --
當前在處理哪一位
set @binlen = len(@strbin)
set @decvalue = 0
set @index = 0
while @index < @binlen
begin
set @index = @index + 1
set @currbit = cast(substring(@strbin, @index, 1) as char(1))
if (@currbit <> '0' and @currbit <> '1') --
出現非法字元,返回
-1
begin
set @decvalue = -1
break
endelse
begin
set @decvalue = @decvalue * 2
if(@currbit = '1')
begin
set @decvalue = @decvalue + power(2, 0)
endend
endreturn @decvalue
end
十進位制轉為二進位制
create function dec2bin(@dec bigint, @strlen tinyint) --7125411734408899 51969950402343442
returns varchar(63) -- int型,4位元組,正數轉為二進位制字串最多31位 as
begin
declare @binstr as varchar(64) -- 二進位制表示的字串
declare @div2 as bigint -- 商
declare @mod2 as bigint -- 模/餘數
declare @firstr as varchar(32)
declare @secstr as varchar(32)
declare @firint as int
declare @secint as int
declare @mobilesec int
declare @mobilezip varchar(20)
if @dec < 0
return 'null' -- 不支援負數的轉換
set @div2 = @dec / 2
set @mod2 = @dec % 2
set @binstr = ''
while @div2 <> 0
begin
set @binstr = cast(@mod2 as char(1)) + @binstr
set @dec = @dec / 2
set @div2 = @dec / 2
set @mod2 = @dec % 2
endset @binstr = cast(@mod2 as char(1)) + @binstr -- 至此,已完成十進位製到二進位制的轉換
if @strlen > len(@binstr) -- 如果使用者指定的長度大於實際長度,則需要左邊補0
begin
if @strlen > 64 -- 返回的長度,最長為32
set @strlen = 64
declare @zerostr varchar(64) -- 需要補充的"0000..."
declare @offsetlen tinyint -- 需要補充幾個"0"
set @zerostr = ''
set @offsetlen = @strlen - len(@binstr)
while @offsetlen > 0
begin
set @zerostr = @zerostr + '0'
set @offsetlen = @offsetlen - 1
endset @binstr = @zerostr + @binstr
set @firstr = substring(@binstr,0,33)
set @secstr = substring(@binstr,33,64)
select @firint = dbo.bin2dec(@firstr)
select @secint = dbo.bin2dec(@secstr)
set @mobilesec = @firint^@secint
select @mobilezip = rtrim(mose_zip) from dbo.[tb_mobilesect]
where mose_mobile_sect = left(cast(@mobilesec as varchar(20)),9)
endreturn @mobilezip
end
js數字進製轉換
其他進製轉十進位制 使用 parseint 函式,parseint解析乙個字串引數,並返回乙個指定基數的整數 用法如下 parseint string,radix 以二進位制為例,用法如下 parseint 1000 2 8parseint 1000,2 8其他進製轉化為10進製只要改變第二個引數就...
不同進製數字轉換
將十進位制數轉換為二進位制 defdec2bin dec if checkdec dec return str bin int dec 將十進位制數轉換為八進位制 defdec2oct dec if checkdec dec return str oct int dec 將十進位制數轉換為十六進製制...
python數字型別 or 進製轉換
整型 int 和浮點型 float age 17 age int 18 int 1.1 int只能轉純數字的字串,就連小數點都不能轉,所以就算轉換成數字型別也應該是浮點型別 10進製轉其他進製 十進位制轉二進位制 print bin 12 0b1100 0b是標識,ob代表後面的數字是二進位制數 十...