10進数と2進数の基数変換

(8.0.22)

10進数→2進数

select conv(1,10,2);
select conv(2,10,2);
select conv(3,10,2);
select conv(8,10,2);


2進数→10進数
select conv('1',2,10);
select conv('10',2,10);
select conv('11',2,10);
select conv('1000',2,10);

 

(19c)
http://kozirefer.com/sql-0015/

10進数→2進数

create or replace function func1(param1 in number) return varchar2
as
i number;
val varchar2(1000) := '';
begin
i := 0;
while power(2,i) <= param1 loop
val := to_char(mod(trunc(param1/power(2,i)),2)) || val;
i := i + 1;
end loop;
return val;
end;
/

select func1(1) from dual;
select func1(2) from dual;
select func1(3) from dual;
select func1(8) from dual;


2進数→10進数

create or replace function func1(param1 in varchar2) return number
as
i number;
val number := 0;
begin
i := 0;
while i < length(param1) loop
val := val + (to_number(substr(param1,length(param1)-i,1)) * power(2,i));
i := i + 1;
end loop;
return val;
end;
/

select func1('1') from dual;
select func1('10') from dual;
select func1('11') from dual;
select func1('1000') from dual;

 

 

(13)
https://qiita.com/fujii_masao/items/f418e4d4072b965849f7

10進数→2進数

select 1::bit(4);
select 2::bit(4);
select 3::bit(4);
select 8::bit(4);


2進数→10進数
select '0001'::bit(4)::int;
select '0010'::bit(4)::int;
select '0011'::bit(4)::int;
select '1000'::bit(4)::int;

 

(2019)
http://babydaemons.hatenablog.com/entry/20110523/Convert_Function_HexString_To_Number_In_SQLServer

10進数→2進数


create or alter function dbo.func1(@input integer)
returns varchar(100)
as
begin
declare @i int = 0;
declare @val varchar(100) = '';

while power(2,@i) <= @input
begin
set @val = cast( (@input/power(2,@i))%2 as varchar) + @val;
set @i = @i + 1
end
return @val
end
go

select dbo.func1(1);
select dbo.func1(2);
select dbo.func1(3);
select dbo.func1(8);

 


2進数→10進数

create or alter function dbo.func1(@input varchar(100))
returns int
as
begin
declare @i int = 0;
declare @val int = 0;

while @i < len(@input)
begin
set @val = @val + cast(substring(@input,len(@input)-@i, 1) as int) * power(2,@i)
set @i = @i + 1
end
return @val
end
go

select dbo.func1('0001');
select dbo.func1('0010');
select dbo.func1('0011');
select dbo.func1('1000');