Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: number to binary conversion

Re: number to binary conversion

From: Igor Neyman <ineyman_at_perceptron.com>
Date: Thu, 14 Jun 2001 13:25:29 -0700
Message-ID: <F001.0032A348.20010614133338@fatcity.com>

Here is my modification of Tom's Kyte code:

FUNCTION to_base( p_dec in number, p_base in number ) return varchar2
is

 l_str varchar2(255) default NULL;
 l_num number default p_dec;
 l_hex varchar2(16) default '0123456789ABCDEF';
begin
if ( trunc(p_dec) <> p_dec ) then
 raise PROGRAM_ERROR;
end if;

IF (p_dec < 0) THEN
 l_num := l_num + 1;
 loop
  l_str := substr( l_hex, l_num - p_base*FLOOR(l_num/p_base), 1 ) || l_str;   l_num := trunc( l_num/p_base );
  exit when ( l_num = 0 );
 end loop;
ELSE
 loop
  l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str;   l_num := trunc( l_num/p_base );
  exit when ( l_num = 0 );
 end loop;
END IF;
return l_str;
end to_base;

FUNCTION to_dec
( p_str in varchar2,
  p_from_base in number default 16 ) return number is
 l_num number default 0;
 l_hex varchar2(16) default '0123456789ABCDEF'; begin
 for i in 1 .. length(p_str) loop
  l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;  end loop;
 return l_num;
end to_dec;

FUNCTION to_hex( p_dec in number ) return varchar2 is
begin
 return to_base( p_dec, 16 );
end to_hex;

FUNCTION to_bin( p_dec in number ) return varchar2 is
begin
 return to_base( p_dec, 2 );
end to_bin;

FUNCTION to_oct( p_dec in number ) return varchar2 is
begin
 return to_base( p_dec, 8 );
end to_oct;

Igor Neyman, OCP DBA
Perceptron, Inc.
(734)414-4627
ineyman_at_perceptron.com

> Good afternoon,
>
> I have seen on this list some time ago PL/SQL to convert a number to/from
> decimal and hex.
> Does anyone have PL/SQL to convert a number to/from a binary
representation?
>
> TIA,
>
> Steven Haas
> Opus Consultants, LLC
> "Opinions expressed, right or wrong, are my own."
>
>
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.com
> --
> Author: Steve Haas
> INET: steven.haas_at_snet.net
>
> Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
> San Diego, California -- Public Internet access / Mailing Lists
> --------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from). You may
> also send the HELP command for other information (like subscribing).

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Igor Neyman
  INET: ineyman_at_perceptron.com

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Thu Jun 14 2001 - 15:25:29 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US