Cambiar de Base X a Base 10

Calcula el valor de un número al pasar de base X (cualquiera) a base 10

Sub Nro2DiezR(ByVal Numero As String, Base As Integer, ByRef Resultado As Long)
    ' Esta rútina es de uso y distribución gratuita, si tienes alguna duda o mejora
    ' puedes escribirme a spidersoft@beer.com
    ' Cálcula el valor de un número al pasar de base X (cualquiera) a base 10
    ' Resultado debe inicializarse a cero antes de llamar a la rutina.
    'Parametros:
    '           Numero; es el número a convertir.
    '           Base; es la base que tiene el número
    '           Resultado; un long donde se almacenará el resultado final.
    'Ejemplo de llamada:
    '           call Nro2Diez ("101",2,Res) 'Pasar 101 (binario) a decimal = 5
    '           call Nro2Diez ("2d3f",16,Res) 'Pasar 2D3F (Hexadecimal) a decimal = 11583
    '
    Dim NumeroAux As Integer
    If Base > 10 And Asc(UCase(Left(Numero, 1))) > Asc("9") Then
        NumeroAux = (Asc(UCase(Numero)) - Asc("9")) + 2
    Else
        NumeroAux = CInt(Left(Numero, 1))
    End If
    Resultado = Resultado + NumeroAux * (Base ^ ((Len(Numero)) - 1))
    If Len(Numero) > 1 Then
        Call Nro2DiezR(Right(Numero, Len(Numero) - 1), Base, Resultado)
    End If
End Sub

Deja un comentario