-- 功能: 將二進位制字串(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 輸出順...