2009-08-04 11 views

उत्तर

32

क्या आप 8.1.5 और बाद के संस्करण का उपयोग कर रहे हैं, तो उपयोग कर सकते हैं:

हेक्साडेसिमल से परिवर्तित करने के लिए दशमलव में:

select to_char(111, 'xxxx') from dual; 
:

select to_number('AA', 'xx') from dual;  

हेक्साडेसिमल में दशमलव से परिवर्तित करने के लिए

+1

जानकारी के लिए धन्यवाद। हालांकि, लिंक मर चुका है। – amram99

+2

आपके उत्तर में हेक्साडेसिमल स्ट्रिंग को दशमलव संख्या साझा करने के लिए धन्यवाद, भले ही यह ओपी के प्रश्न से अधिक हो। –

3

एफटीए: Oracle to Decimal:

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 
11
SELECT TO_NUMBER('DEADBEEF', 'XXXXXXXX') 
FROM dual 

--- 
3735928559 

SELECT TO_CHAR(3735928559, 'XXXXXXXX') 
FROM dual 
--- 
DEADBEEF 
5

Oracle8i, TO_CHAR और TO_NUMBER कार्यों में शुरू आधार 16 (हेक्साडेसिमल) और फिर से वापस करने के लिए आधार 10 (दशमलव) से रूपांतरण संभाल कर सकते हैं :

SQL> select to_char(123,'XX') to_hex, 
2 to_number('7B','XX') from_hex 
3 from dual 
4/ 
TO_  FROM_HEX 
------ ----------------- 
7B  123 

source

संबंधित मुद्दे