Pular para o conteúdo
  • Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 9 meses atrás por MarceloMoreno.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #79229
    marcelomirandola
    Participante

      Pessoal, alguém sabe como converter um número decimal em binário?
      Eu testei o comando:

      SELECT TO_BINARY_DOUBLE(15) from dual

      ele retorna 15.0 e deveria retornar 1111.

      Se alguém souber, eu agradeço.

      #79237
      Marcio68Almeida
      Participante

        só por curiosidade…
        para que você quer isso ???

        #79252
        marcelomirandola
        Participante

          Cara, é o seguite:
          Eu tenho um controle com quatro tipos de acesso.
          Para não criar 4 flags, eu gravo apenas um número (decimal).
          P.Ex.:
          – para o usuário 1 eu dou acesso 15 (binário=1111)
          – para o usuário 2 eu dou acesso 10 (binário=1010)
          .
          .
          .
          Cada posição do dígito binário, corresponde a um acesso.
          Onde tiver 1, tem acesso, onde tiver 0 não tem acesso.
          Se for mais acessos, vai aumentando o decimal.

          Agora vc pode dizer como faz a conversão?

          #79253
          Marcio68Almeida
          Participante

            Entendi a idéia, procurei mas não encontrei nada que fizesse o que você procura…

            #79276
            MarceloMoreno
            Participante

              Não poderia criar uma função?

              CREATE OR REPLACE FUNCTION dec_to_bin (decin IN NUMBER) RETURN VARCHAR2 IS
              v_decin NUMBER;
              v_next_digit NUMBER;
              v_result varchar(2000);
              BEGIN
              IF decin = 0 THEN RETURN ‘0’;
              ELSIF decin IS NULL THEN RETURN NULL;
              END IF;
              v_decin := decin;
              WHILE v_decin > 0 LOOP
              v_next_digit := mod(v_decin,2);
              v_result := to_char(v_next_digit) || v_result;
              v_decin := floor(v_decin / 2);
              END LOOP;
              RETURN v_result;
              END dec_to_bin;

              Testei com o valor 15 e retornou 1111

              SQL> select dec_to_bin(15) from dual;

              DEC_TO_BIN(15)

              1111

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress