Snippet Name: Convert Hex to Decimal, Decimal to Hex Description: Functions to convert Hex to Decimal Example usage: select hex2dec('FF') from dual; select num2hex(10) from dual; and vice versa. Also see:» FUNCTIONS: Deterministic » FUNCTIONS: Nested Functions » FUNCTIONS: IF statement » FUNCTIONS: date/time » FUNCTIONS: Sample functions » FUNCTIONS: drop » FUNCTIONS: Recompile » FUNCTIONS: DEBUG mode » FUNCTIONS: IN OUT parameter » FUNCTIONS: with output parameters » FUNCTIONS: with parameters » FUNCTIONS: without parameters » FUNCTIONS: Create function » FUNCTIONS: special restrictions » FUNCTIONS: System Privileges » IN Function » Built-In Functions: CASE » Built-In Functions: DECODE » SUBST and INSTR together » INSTR (InString) » SUBSTR (SubString) » String Functions: REVERSE » String Functions: LENGTH » String Functions: INSTR » String Functions: CONCAT » String Functions: CHAR » String Functions: INITCAP » String Functions: LOWER » String Functions: UPPER » Date Functions: NUMTOYMINTERVAL Comment: (none) Language: PL/SQL Highlight Mode: PLSQL Last Modified: February 27th, 2009
Description: Functions to convert Hex to Decimal Example usage: select hex2dec('FF') from dual; select num2hex(10) from dual; and vice versa.
Also see:» FUNCTIONS: Deterministic » FUNCTIONS: Nested Functions » FUNCTIONS: IF statement » FUNCTIONS: date/time » FUNCTIONS: Sample functions » FUNCTIONS: drop » FUNCTIONS: Recompile » FUNCTIONS: DEBUG mode » FUNCTIONS: IN OUT parameter » FUNCTIONS: with output parameters » FUNCTIONS: with parameters » FUNCTIONS: without parameters » FUNCTIONS: Create function » FUNCTIONS: special restrictions » FUNCTIONS: System Privileges » IN Function » Built-In Functions: CASE » Built-In Functions: DECODE » SUBST and INSTR together » INSTR (InString) » SUBSTR (SubString) » String Functions: REVERSE » String Functions: LENGTH » String Functions: INSTR » String Functions: CONCAT » String Functions: CHAR » String Functions: INITCAP » String Functions: LOWER » String Functions: UPPER » Date Functions: NUMTOYMINTERVAL
CREATE OR REPLACE FUNCTION hex2dec (hexnum IN CHAR) RETURN NUMBER IS i NUMBER; digits NUMBER; result NUMBER := 0; current_digit CHAR(1); current_digit_dec NUMBER; BEGIN digits := LENGTH(hexnum); FOR i IN 1..digits LOOP current_digit := SUBSTR(hexnum, i, 1); IF current_digit IN ('A','B','C','D','E','F') THEN current_digit_dec := ASCII(current_digit) - ASCII('A') + 10; ELSE current_digit_dec := TO_NUMBER(current_digit); END IF; result := (result * 16) + current_digit_dec; END LOOP; RETURN result; END hex2dec; / show errors CREATE OR REPLACE FUNCTION num2hex (N IN NUMBER) RETURN VARCHAR2 IS H VARCHAR2(64) :=''; N2 INTEGER := N; BEGIN LOOP SELECT RAWTOHEX(CHR(N2))||H INTO H FROM dual; N2 := TRUNC(N2 / 256); EXIT WHEN N2=0; END LOOP; RETURN H; END num2hex; / show errors