二進位制轉十進位制的SQL函式

2021-04-01 20:57:24 字數 1167 閱讀 4327

-- 功能: 將二進位制字串(varchar)轉換為十進位制數(int)

-- 輸入引數: @strbin 待轉換的二進位制字串

-- 返回值: 相應的十進位制數,如果二進位制數非法,返回-1

-- 注意: @strbin的長度不能大於31

-- 日期: 2005-10-05

-- 例子: select dbo.bin2dec('1001') as '15的二進位制表示'

create function bin2dec(@strbin varchar(31))

returns int ---- 只支援最多31位長二進位制字串的解析

asbegin

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

end

else

begin

set @decvalue = @decvalue * 2

if(@currbit = '1')

begin

set @decvalue = @decvalue + power(2, 0)

end

end

end

return @decvalue

endgo

二進位制轉十進位制

二進位制轉十進位制方法很多,如字元陣列,指標法等 下面用字串函式的方法實現 二進位制轉十進位制 主要用 到 string函式性質及pow求乙個數的n次方的函式過載 by adengou 2010.08.04 win7 dev c 5.0 vs 2010 通過 include include incl...

十進位制轉二進位制

includeint dg unsigned n,int c 注意 引數型別是unsigned int main 陣列全部初始化為0 printf d n sizeof int unsigned temp,u temp u 4294967295u int tu int u printf u u,tu...

十進位制轉二進位制

宣告 最後一種降冪法頗具魅力,而且與方法二有異曲同工之妙 十進位制轉二進位制的幾種方法 輸入 乙個無符號的十進位制整數 輸出 對應十進位制的二進位制顯示 例如 input 10,output 1010 方法一 除二取餘法 forinput 0 cout input 2 input 2 end 輸出順...