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
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s