Pular para o conteúdo

Fóruns Banco de dados Oracle Transformar Hexadecimal em inteiro (number) Transformar Hexadecimal em inteiro (number)

#95116
Muca
Participante

    [quote=”Muca”:4qjdmtx2]Senhores,

    Existe alguma função no Oracle que converta um valor hexadecimal para inteiro (number) e vice versa???
    Exemplo

    o hexadecimal ABCD convertido para inteiro 43.981;

    ja existe algo pronto?!?!?

    Obrigado![/quote]

    Acabei encontrando algo nesse meio tempo… seguem os codigos:

    HEXADECIMAL PARA DECIMAL

    CREATE OR REPLACE FUNCTION hex2dec (hexval in char) RETURN number IS
    i number;
    digits number;
    result number := 0;
    current_digit char(1);
    current_digit_dec number;
    BEGIN
    digits := length(hexval);
    for i in 1..digits loop
    current_digit := SUBSTR(hexval, 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;

    DECIMAL PARA HEXADECIMAL

    CREATE OR REPLACE FUNCTION dec2hex (N in number) RETURN varchar2 IS
    hexval varchar2(64);
    N2 number := N;
    digit number;
    hexdigit char;
    BEGIN
    while ( N2 > 0 ) loop
    digit := mod(N2, 16);
    if digit > 9 then
    hexdigit := chr(ascii(‘A’) + digit – 10);
    else
    hexdigit := to_char(digit);
    end if;
    hexval := hexdigit || hexval;
    N2 := trunc( N2 / 16 );
    end loop;
    return hexval;
    END dec2hex;

    é isso … acredito que o topico esteja resolvido!

    Valeu…!!!