• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Dj_Pedro

[VB6] Decimais para Hexadecimais e vice-versa!

8 mensagens neste tópico

Hi pessoal tudo??

Olhem eu cria fazer um programa que convertesse decimais para hexadecimais ...

Eu fiz um em binario para hexadecimal e vice-versa (pk não sabia fazer como decimais) e deu-me muito trabalho tive de fazer sempre assim

If text1.text = 0 then text2.text = 0
                 If text3.text = 1 then text4.text = 00001
                 If text5.text = 2 then text6.text = 00010

E para não fazer a mesma cena com decimais

   

If text1.text = 5 then text2.text = 5
                     If text3.text = 10 then text4.text = A 

E acho que existe uma forma de fazer isso num só código e numa so barra ...

Se é que me faço etender ....

O meu esquema bin to hex e hex to bin era analisar as textbox (que eram 16 a contar c/ o 0 logo hexadecimal) e depois por nas outras textbox.... e isso da muito trabalho e gostava de saber pela outra maneira...

Alguem me pode ajudar???

Cumps. :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se n me engano é Hex(numero) experimenta! o contrario é que acho que n existe nenhuma função lembro-me de fazer isso à um tempo e deu-me uma grande dor de cabeça....

(entretanto fui procurar aqui aos porjectos acabados...)

Descobri o codigo mas está em ASP, a diferença não é mta vê se consegues adapta-lo:

Function hexadecimal_decimal(a)
If isnumeric(a) = true OR inStr(a,"a") <> 0 OR inStr(a,"b")  <> 0 OR inStr(a,"c") <> 0 OR inStr(a,"d") <> 0 OR inStr(a,"e") <> 0 OR inStr(a,"f") <> 0 OR inStr(a,"A") <> 0 OR inStr(a,"B")  <> 0 OR inStr(a,"C") <> 0 OR inStr(a,"D") <> 0 OR inStr(a,"E") <> 0 OR inStr(a,"F") <> 0 then

valHEX = a 
valLen = Len(valHex)
valLen2= len(valHex)
intPof = valLen
For i = 1 To ValLen
ValDec = Left(Mid(valHex,i,1),i)
If Instr(Ucase(valDec),"A") Then valDec = 10
If Instr(Ucase(valDec),"B") Then valDec = 11
If Instr(Ucase(valDec),"C") Then valDec = 12
If Instr(Ucase(valDec),"D") Then valDec = 13
If Instr(Ucase(valDec),"E") Then valDec = 14
If Instr(Ucase(valDec),"F") Then valDec = 15
If valLen2>= 3 Then
rslt=valDec*16^(intPof-i)
valLen2=valLen2-1
ElseIf valLen2=2 Then
rslt=valDec*16
valLen2=valLen2-1
ElseIf valLen2=1 Then
rslt=valDec
End If
myRslt = myRslt + rslt
Next
response.write ("<br><br><br><center><font size=8>O valor da conversão é:<b> " &myRslt& " </b></font><br><br> <a href=conversor.htm>Converter outro numero</a></center>")
else
response.write ("<br><br><br><center><font size=6>Numero Invalido, so pode conter numeros de 0 a 9 e letras de A a F.</font><br><br><a href=conversor.htm>Back</a></center>")
End if
End Function

Dá noticias  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De decimal para hexadecimal usa Hex(numero). Para fazer uma conversão de hexadecimal para decimal não necessitas de fazer nada por exemplo experimenta Print, &HF34A01. Agora, aquilo que tu queres (acho eu...) é escrever o hexadecimal numa textbox e depois converter para decimal, acho que podes fazer assim: CInt("&H" & Text1.Text). Cuidado com os overflows. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se n me engano é Hex(numero) experimenta! o contrario é que acho que n existe nenhuma função lembro-me de fazer isso à um tempo e deu-me uma grande dor de cabeça....

(entretanto fui procurar aqui aos porjectos acabados...)

Descobri o codigo mas está em ASP, a diferença não é mta vê se consegues adapta-lo:

Function hexadecimal_decimal(a)
If isnumeric(a) = true OR inStr(a,"a") <> 0 OR inStr(a,"b")  <> 0 OR inStr(a,"c") <> 0 OR inStr(a,"d") <> 0 OR inStr(a,"e") <> 0 OR inStr(a,"f") <> 0 OR inStr(a,"A") <> 0 OR inStr(a,"B")  <> 0 OR inStr(a,"C") <> 0 OR inStr(a,"D") <> 0 OR inStr(a,"E") <> 0 OR inStr(a,"F") <> 0 then

valHEX = a 
valLen = Len(valHex)
valLen2= len(valHex)
intPof = valLen
For i = 1 To ValLen
ValDec = Left(Mid(valHex,i,1),i)
If Instr(Ucase(valDec),"A") Then valDec = 10
If Instr(Ucase(valDec),"B") Then valDec = 11
If Instr(Ucase(valDec),"C") Then valDec = 12
If Instr(Ucase(valDec),"D") Then valDec = 13
If Instr(Ucase(valDec),"E") Then valDec = 14
If Instr(Ucase(valDec),"F") Then valDec = 15
If valLen2>= 3 Then
rslt=valDec*16^(intPof-i)
valLen2=valLen2-1
ElseIf valLen2=2 Then
rslt=valDec*16
valLen2=valLen2-1
ElseIf valLen2=1 Then
rslt=valDec
End If
myRslt = myRslt + rslt
Next
response.write ("<br><br><br><center><font size=8>O valor da conversão é:<b> " &myRslt& " </b></font><br><br> <a href=conversor.htm>Converter outro numero</a></center>")
else
response.write ("<br><br><br><center><font size=6>Numero Invalido, so pode conter numeros de 0 a 9 e letras de A a F.</font><br><br><a href=conversor.htm>Back</a></center>")
End if
End Function

Dá noticias  :thumbsup:

O que quero é hexadecimal com os números e letras(1 até 9 , A até F) para converter em decimais (só números).

Pois obrigado pela resposta + acho que assim não vou chegar la ....

Tipo ASP da para programar em base win32???

Cumps.

P.s.-> desculpem o incomodo + é que eu aind ñ estou a dar aulas de programação só para ano é que vou para o 10º ai as minhas varias perguntas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se souberem como fazer ou traduzir programação ASP para VB6 agradeço...

Cumps. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens aqui o programa já feito, está a funcionar não sei se falta alguma coisa ou não ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens aqui o programa já feito, está a funcionar não sei se falta alguma coisa ou não ...

Obrigado Pessoal por tudo :thumbsup:

Só que tipo eu cria fazer uma coisa do genero :

Hex -> 0878C07E4F762318

E converter o la de cima para :

Dec -> 008120192126079118035024 (c/ este formato)

E vice-versa alguem sabe como???

Deixo aqui um exemplo de um programa (não feito por mim) + cria fazer deste genero ....

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se bem percebi deve ser algu do genero disto que queres

Option Explicit

Private Sub cmdConvert_Click()
Dim Vals(50) As String * 1
Dim Temp     As String
Dim i        As Integer
Dim TSoma    As Double
Dim Soma     As Double

Temp = UCase(txtVal.Text)

For i = 0 To Len(txtVal.Text) - 1
    Vals(i) = Right(Temp, 1)
    Temp = Left(Temp, Len(Temp) - 1)
DoEvents
Next i


For i = 0 To Len(txtVal.Text) - 1
     TSoma = (Converte(Vals(i)) * (16 ^ i))
     Soma = Soma + TSoma
DoEvents
Next i
    
MsgBox Soma
End Sub




Private Function Converte(Valor As String) As Integer
Select Case Valor
Case "A"
    Converte = 10
Case "B"
    Converte = 11
Case "C"
    Converte = 12
Case "D"
    Converte = 13
Case "E"
    Converte = 14
Case "F"
    Converte = 15
End Select

If IsNumeric(Valor) Then
    Converte = Val(Valor)
End If
End Function

Apenas tens de adicionar uma texbox com o nome de "txtval" e um CommandButon com o nome de "cmdConvert".

fiz apenas o conversor de Hexadecimal para decimal para teres uma noção de como é, para fazeres a parte de Decimal para Hexadecimal procura os metodos de conversão  :(

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora