-
Is there any function in Oracle to convert the DEC to HEX format ?
Let's say TO_HEX(16) = A ???
Thanks
-
select to_char(10,'XXXXXXXXX') from dual;
However, 16 = 10, and 10 = A, right :-)
The other way round:
select to_number('A','XXXXXXXXX') from dual;
-
select to_char(10,'XXXXXXXXX') from dual;
select to_number('A','XXXXXXXXX') from dual;
both of them can not work under oracle7.3 . The format
string is incorrect.
Any idea ?
-
I see, you use Oracle 7.
Use this one (hand-made, neglect the Finnish language comments), use it like:
select luku_muunnos(16) from dual;
function luku_muunnos(desimaali_luku in number)
return varchar2
is
-- Uusi heksadesimaali asetetaan muuttujaan 'w_uusi_desimaali'.
w_uusi_desimaali number;
-- Muuttuja w_desimaaliluku on jäljelle jäävä, vielä muuntamaton osuus.
w_desimaaliluku number;
-- Paluuarvo.
w_ret varchar2(1000);
begin
-- Mikäli annettu parametri on null tai negatiivinen, palautetaan null.
if ((desimaali_luku is null) or (desimaali_luku < 0)) then return (null); end if;
-- Alustetaan paluuarvo ja vielä muuntamaton osuus.
w_ret := '';
w_desimaaliluku := desimaali_luku;
-- Käydään läpi desimaalilukua, kunnes se on muunnettu kokonaan.
loop
-- Uusi muunnettava desimaali saadaan ottamalla luvusta 16:n jakojäännös.
w_uusi_desimaali := w_desimaaliluku mod 16;
-- Sitten jäljellä oleva osa jaetaan 16:lla alaspäin pyöristäen.
w_desimaaliluku := (w_desimaaliluku-w_uusi_desimaali)/16;
-- Tutkitaan, mikä uusi heksadesimaali on ja konkatenoidaan se aiemmilla kierroksilla
-- saadun esityksen alkuun.
if w_uusi_desimaali = 10 then
w_ret := 'A' || w_ret;
elsif w_uusi_desimaali = 11 then
w_ret := 'B' || w_ret;
elsif w_uusi_desimaali = 12 then
w_ret := 'C' || w_ret;
elsif w_uusi_desimaali = 13 then
w_ret := 'D' || w_ret;
elsif w_uusi_desimaali = 14 then
w_ret := 'E' || w_ret;
elsif w_uusi_desimaali = 15 then
w_ret := 'F' || w_ret;
else w_ret := w_uusi_desimaali || w_ret;
end if;
-- Kun luku on muunnettu loppuun asti, on w_desimaaliluku 0, ja paluuarvo voidaan palauttaa.
if (w_desimaaliluku = 0) then return (w_ret); end if;
end loop;
end; -- function luku_muunnos(desimaali_luku in number)
--
-
For conversion of "any base" to "any base" number (from-to bin, oct, dec, hex, or any other base), go to the following URL:
http://osi.oracle.com/~tkyte/hexdec/index.html
Jurij Modic
ASCII a stupid question, get a stupid ANSI
24 hours in a day .... 24 beer in a case .... coincidence?
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|