sql 數字進製轉換

2021-04-18 09:50:32 字數 2815 閱讀 1575

二進位制轉為十進位制函式:

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代表後面的數字是二進位制數 十...