Visual Basic - Pregunta a verdaderos programadores

Life is soft - evento anual de software empresarial
 
Vista:

Pregunta a verdaderos programadores

Publicado por Pau Labarta (3 intervenciones) el 05/07/2001 17:22:13
Me gustaria que me digesen si hay alguna funcion para pasar un numero de decimal a hexadecimal y viceversa. Tambien pero con binarios. Gracias por anticipado y hasta otra
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pregunta a verdaderos programadores

Publicado por Vicky Castillo (17 intervenciones) el 05/07/2001 18:00:12
La funcion Hex(numero) te regresa un valor string con el numero en hexadecimal.
Para convertir de hexadecimal a decimal puedes usar la funcion val.
Ej.
Val("&HFFFF")

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta a verdaderos programadores

Publicado por alberto (278 intervenciones) el 06/07/2001 10:05:42
En principio que yo sepa todo lo que tu pides no, pero puedes utilizar la siguiente función:
Public Function Conversion(Numero As String, _
ByVal BaseOrigen As Integer, _
ByVal BaseDestino) As String
Dim Contador As Integer
Dim FConversion As Long
Dim NTemporal As Long
Dim elDigito As Byte

If BaseOrigen = 10 Then
NTemporal = CLng(Numero)
Else
'Conversión a Base decimal
NTemporal = 0
FConversion = 1
For Contador = Len(Numero) To 1 Step -1
NTemporal = NTemporal + (Asc(Mid(Numero, Contador, 1)) - vbKey0) * FConversion
FConversion = FConversion * BaseOrigen
Next Contador

End If
'
'NTemporal contiene el número en decimal
If BaseDestino = 10 Then
Conversion = CStr(NTemporal)
Exit Function
End If

'Conversión a BaseDestino
While NTemporal <> 0
elDigito = NTemporal Mod BaseDestino
Conversion = Chr(elDigito + vbKey0) & Conversion
NTemporal = NTemporal \ BaseDestino
Wend

End Function

Que hace conversiónes de una base cualquiera a otra. Como es una función genérica no está optimizada para manejar números binarios puedes modificarla para obtener una versión especifica para esa base.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una correción

Publicado por alberto (278 intervenciones) el 06/07/2001 10:21:31
Perdonar pero la función es erronea, esta es la versión correcta.
Public Function Conversion(Numero As String, _
ByVal BaseOrigen As Integer, _
ByVal BaseDestino) As String
Dim Contador As Integer
Dim FConversion As Long
Dim NTemporal As Long
Dim elDigito As Byte

If BaseOrigen = 10 Then
NTemporal = CLng(Numero)
Else
'Conversión a Base decimal
NTemporal = 0
FConversion = 1
For Contador = Len(Numero) To 1 Step -1
If Asc(Mid(Numero, Contador, 1)) <= vbKey9 Then

NTemporal = NTemporal + (Asc(Mid(Numero, Contador, 1)) - vbKey0) * FConversion
Else
NTemporal = NTemporal + (Asc(Mid(Numero, Contador, 1)) - vbKeyA + 10) * FConversion
End If
FConversion = FConversion * BaseOrigen
Next Contador
End If
'
'NTemporal contiene el número en decimal
If BaseDestino = 10 Then
Conversion = CStr(NTemporal)
Exit Function
End If

'Conversión a BaseDestino
While NTemporal <> 0
elDigito = NTemporal Mod BaseDestino
If elDigito < 10 Then
Conversion = Chr(elDigito + vbKey0) & Conversion
Else
Conversion = Chr(elDigito + vbKeyA - 10) & Conversion
End If
NTemporal = NTemporal \ BaseDestino
Wend

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar