rem ----------------------------------------------------------------------- rem Filename: dbms_numsystem.sql rem Purpose: Package with functions to convert numbers between the rem Decimal, Binary, Octal and Hexidecimal numbering systems. rem Usage: See sampels at the bottom of this file rem Author: Frank Naude, 17 February 2003 rem ----------------------------------------------------------------------- set serveroutput on CREATE OR REPLACE PACKAGE dbms_numsystem AS function bin2dec (binval in char ) RETURN number; --function dec2bin (N in char) RETURN varchar2; --function dec2binn (N in number) RETURN varchar2; END dbms_numsystem; / show errors CREATE OR REPLACE PACKAGE BODY dbms_numsystem AS FUNCTION bin2dec (binval in char) RETURN number IS i number; digits number; result number := 0; current_digit char(1); current_digit_dec number; BEGIN digits := length(binval); for i in 1..digits loop current_digit := SUBSTR(binval, i, 1); current_digit_dec := to_number(current_digit); result := (result * 2) + current_digit_dec; end loop; return result; END bin2dec; /* insert other package functions here: FUNCTION dec2bin (decval in char) RETURN varchar2 IS binval varchar2(64); ... end dec2bin; FUNCTION dec2binn (N in number) RETURN varchar2 IS binval varchar2(64); N2 number := N; ... end dec2binn; */ END dbms_numsystem; / show errors -- Examples: select dbms_numsystem.bin2dec('00000101') from dual; select dbms_numsystem.bin2dec('11111111') from dual; --select dbms_numsystem.dec2bin(22) from dual; --select dbms_numsystem.dec2binn(22) from dual;