Mid binario-hexadecimal

La presente es para solicitarles lo siguiente : Necesito un algoritmo o función por medio de la cual pueda realizar cambios de binario a hexadecimal. También un programa por medio del cual pueda hacer lo siguiente :
Tengo en el formulario dos opciones : 0-1(dos check box), también tengo una cadena de binarios (supongamos 0000111011) y necesito pasar esta cadena a hexadecimal y mostrarla en cuadro de texto por medio de un botón de comando; la idea seria que cuando el usuario escoja una de las opciones inmediatamente se cambie esta opción en la posición establecida (supongamos en la posición 6) e inmediatamente me muestre el cambio en hexadecimal.

4 Respuestas

Respuesta
1
Aquí te adjunto dos rutinas que tu pueden ser útiles:
Function ConvertirBinario(numero$) As String
'Convierte un numero de decimal a binario
Dim digito As Integer, temp As String
temp = ""
Do
digito = numero Mod 2
If digito = 0 Then
temp = "0" + temp
Else
temp = "1" + temp
End If
numero = numero \ 2
Loop Until numero = 0
ConvertirBinario = temp
End Function
Function HexadecimalToDecimal(numero$) As Long
'Convierte un numero de hexadecimal a decimal
Dim digito As Long
Dim res As Long, letra As String
numero = Strings.StrReverse(numero)
numero = UCase(numero)
For contador = Len(numero) To 1 Step -1
letra = Mid(numero, contador, 1)
If letra >= "A" And letra <= "F" Then
digito = Asc(letra) - 55
Else
digito = Val(letra)
End If
digito = digito * (16 ^ (contador - 1))
res = res + digito
Next
HexadecimalToDecimal = res
Debug.Print Hex(res)
End Function
Para convertir un numero de decimal a hexadecimal hay que usar la función hex
Ej:
Debug. Print hex(10)
Devolveria A
Respuesta
1
Para convertir un numero binario a hexadecimal, primero lo convierto a decimal y luego a hexadecimal. Te pongo aquí un pequeño ejemplo de como hacerlo que utiliza una función que pasa de binario a decimal y luego el decimal lo conviertes a hexadecimal con la función Hex()
Private Function BinarioADecimal(nBinario As String) As Long
Dim nDecimal As Long
Dim Indice As Long
Dim nBits As Long
nBits = Len(nBinario)
For Indice = nBits To 1 Step -1
If Mid$(nBinario, Indice, 1) = "1" Then
If nBits - Indice > 30 Then
nDecimal = nDecimal Or -2147483648#
Else
nDecimal = nDecimal + 2 ^ (nBits - Indice)
End If
End If
Next Indice
BinarioADecimal = nDecimal
End Function
Para llamar ha esta funcion puedes hacerlo asi:
Dim NumeroDecimal As Long
NumeroDecimal = BinarioADecimal("101011")
y luego el numero obtenido lo conviertes a hexadecimal
Dim NumeroHexadecimal As String
NumeroHexadecimal = Hex(NumeroDecimal)
Y ya lo tienes.
Respecto a la segunda parte de la consulta, en la que me dices lo del formulario y los checkbox, no te he entendido lo que pretendes hacer, si me lo explicaras un poco mejor estaría encantado de ayudarte.
Respuesta
¿Exactamente en que quieres que te ayude? ¿Estas familiarizado con la programación y con Visual Basic? Si lo que deseas es que realice un form completo enviame datos un poco más concretos y lo estudiaré...
Respuesta
Ese tipo de cambios lo puedes hacer usando funciones de VB... la función HEX de transforma un numero decimal a Hexadecimal, no recuerdo el nombre de la otra función. Pero en la ayuda de VB hay un listado con todas las funciones del VB

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas