"Ayuda" con Codigo(Pasar de Decimal a Binario)

Iniciado por Jirp96, 8 Mayo 2011, 21:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Jirp96

Hola, este es mi primer post aqui(segundo con el de presentacion ;D ) y queria hacer una pregunta sobre un codigo que hice(es una funcion para pasar un numero de decimal a binario)
Esta es la funcion(la hice en base a esto: http://es.wikipedia.org/wiki/Sistema_binario):

Código (vbnet) [Seleccionar]
    Function DecToBin(ByVal numDec As Integer) As String
        Dim ret As String = ""
        Dim arrRet() As Char

        While Not numDec = 1
            ret = ret & CStr(numDec Mod 2)
            numDec = numDec \ 2
        End While

        ret = ret & "1"
        ReDim arrRet(ret.Length())
        arrRet = ret.ToCharArray
        Array.Reverse(arrRet)
        Return arrRet
    End Function


Se que debe haber mil y una cosas que se pueden cambiar en el codigo, pero no se cuales son ;D
por cierto, tengo otra duda(sobre la misma funcion):
-Si yo llamo la funcion asi:
Código (vbnet) [Seleccionar]
        Dim n As Integer
        Console.WriteLine("Introduce un numero en Decimal para Pasarlo a Binario:")
        n = CInt(Console.ReadLine())

No hay ningun problema, y me devuelve el resultado correctamente, pero si llamo la funcion asi:
Código (vbnet) [Seleccionar]
Dim n As Integer
        For n = 0 To 10
            Console.WriteLine("El numero en Binario es: " & DecToBin(n))
        Next

        Console.ReadLine()

No me devuelve ningun resultado y se queda "colgado" el visual basic...
Alguien sabe porque?
Uso Visual Basic Express 2005(.NET framework 2.0) y WinXP
Aclaro tambien que soy "novato" en la programacion, y que
Saludos, y muchas gracias por adelantado a los que se tomaron el tiempo de leer...
pd: Si el codigo es muy largo o si no lo postee bien pido disculpas...

seba123neo

Hola, con una sola linea podes convertir de decimal a binario o a cualquier base.

Código (vbnet) [Seleccionar]
MsgBox(Convert.ToString(10234, 2))

saludos.

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Jirp96

Gracias por el dato seba123neo,
que la verdad que no tenia ni idea de que habia una forma de hacerlo,
y que era tan facil  :xD
igual.... aunque haya otra forma de hacerlo, aprendi algo nuevo asi xD

raul338

De todas formas es porque empiezas por 0 en el for en el primer codigo, por lo que al dividir por 2 da siempre 0, y el bucle termina cuando el numero es 1, por lo que entra en un bucle infinito :D (tambien tuve que hacer esa funcion recientemente por cuestiones de comodidad)

Jirp96

Muchas gracias por la aclaracion del bucle For, raul338,
la verdad es que no lo habia notado :silbar: