Como converter números inteiros decimais em hexadecimal seqüências

Traduções deste artigo Traduções deste artigo
ID do artigo: 192303 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário


No entanto, a função no artigo é limitada em tamanho do número inteiro pode converter. No Visual FoxPro, a função TRANSFORM() pode ser usada para converter números inteiros decimais em seqüências de caracteres hexadecimais. No entanto, TRANSFORM() não pode manipular negativos inteiros decimais (por exemplo, TRANSFORM (-2, "@ 0")).

Este artigo demonstra como usar a função DecToHex para converter qualquer número inteiro decimal (até DWORD em tamanho) em uma seqüência de caracteres hexadecimal, independentemente do sinal do número inteiro.

Mais Informações

O código a seguir demonstra como usar a função DecToHex() para converter números decimais inteiros em uma seqüência de caracteres contendo o número hexadecimal equivalente.

Código de exemplo

   *-- Code begins here.
   WAIT WINDOW "-" + STR(2146828218) + " = " + DecToHex(-2146828218)
   WAIT WINDOW STR(-43690) + " = " + DecToHex(-43690)
   WAIT WINDOW STR(43690) + " = " + DecToHex(43690)

   *-----------------------------------------------------------------
   *- Function:    DecToHex
   *- Summary:     Converts decimal integers to hex strings, whether
   *-              signed or unsigned.
   *- Parameters:  liDecNumber - decimal number to convert.
   *-----------------------------------------------------------------
   FUNCTION DecToHex
   PARAMETERS liDecNumber
   lsHexNumber = ""
   IF liDecNumber > 0 && It's not negative, so do a straight TRANSFORM.
      lsHexNumber = TRANSFORM(liDecNumber, "@0")
   ELSE

      *-- The number is negative, so we'll have to do a little more work,
      *-- since it's not as straight forward as converting and adding a
      *-- minus sign.

      *-- Find the length of the resulting hex string.
      lsHexNumber = TRANSFORM(ABS(liDecNumber), "@0")
      IF SUBSTR(lsHexNumber, 3, 1) = "0" && The number has filled the
                                         && eight places of DWORD.
         liLength = LEN(SUBSTR(lsHexNumber, NotAt("0", lsHexNumber, 2)))
      ELSE
         *-- Subtract to account for "0x".
         liLength = LEN(TRANSFORM(ABS(liDecNumber), "@0")) - 2
      ENDIF

      lsTempHex = 0xFFFFFFFF
      lsHexNumber = TRANSFORM(lsTempHex-ABS(liDecNumber) + 1, "@0")
   ENDIF
   RETURN lsHexNumber

   *-----------------------------------------------------------------
   *- Function:    NotAt
   *- Summary:     From within a passed string, finds the first
   *-              occurrence of a character that is not the character
   *-              specified.  In other words, this function works
   *-              opposite of the manner that AT() does.
   *- Parameters:  lsNotString -    What we don't want.  The function
   *-                               finds the first character that is
   *-                               not lsNotString.
   *-              lsSearchString - The string in which to search.
   *-              liOccurence -    Indicates that NotAt should find
   *-                               the liOccurence of a character
   *-                               that is not lsNotString.
   *-----------------------------------------------------------------
   FUNCTION NotAt()
   PARAMETERS lsNotString, lsSearchString, liOccurrence

   llFound       = .F.  && Flag indicates if we've found a character that
                        && is NOT lsNotString
   llEndOfString = .F.  && Flag to indicate that we've reached the end
                        && of the string.
   lnCounter     = 0    && Tracks position during the search.
   lnLength      = LEN(lsSearchString)
   liOccurCount  = 0    && Tracks how many occurrences have been found.

   *-- Loop until the desired character is found or the end of
   *-- the string is reached.
   DO WHILE NOT llFound AND NOT llEndofString
      lnCounter = lnCounter + 1
      lsCompare = SUBSTR(lsSearchString, lnCounter, 1)
      IF lsCompare <> lsNotString
         liOccurCount = liOccurCount + 1

         *-- Have we found the occurrence we want?
         IF liOccurCount = liOccurrence
            llFound = .T.
         ENDIF
      ENDIF
      IF lnCounter = lnLength
         llEndOfString = .T.
      ENDIF

   ENDDO
   RETURN lnCounter
   *-- Code ends here.
				

Referências

Para obter informações adicionais, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
155389Como converter valores em formato hexadecimal com Xbase
(c) Microsoft Corporation 1998. Todos os direitos reservados. Contribuições de Mike a. Stewart, Microsoft Corporation.

Propriedades

ID do artigo: 192303 - Última revisão: terça-feira, 29 de junho de 2004 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
Palavras-chave: 
kbmt kbcode kbhowto KB192303 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 192303

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com