Hola, soy novato en Visual Basic (2010 Express), estoy haciendo una especie de "encriptador" de mensajes sencillo.
La idea es que sustituya las letras del abecedario por números, por ejemplo:
a=1, b=2, c=3, etc. Y también al revéz: 1=a, 2=b, 3=c, etc.
El programa que hice me convierte letras a números perfectamente, pero tengo un pequeño problema al hacer la operación contraria, cuando intento convertir números en letras, el programa toma los dígitos por separado, ejemplo:
cifrando:
Escribo la letra "L" y me la convierte en un "12" (Hasta ahí todo bien)
descifrando:
Cuando escribo "12" no me devuelve la "L" sino que toma el 1 y 2 por separado y escribe "AB"
¿Cómo puedo solucionar esto? Espero puedan ayudarme, gracias.
vas a tener que hacer que quede asi.
abcde
1|2|3|4|5
Un ejemplo mas complejo:
lale
12|1|12|5
Necesitas un "delimitador" que tenga los numeros juntos.
Despues con un split los tenes separaditos y lindos :)
puedes hacer un split como dice Elemental Code o tambien tienes la opcion de modificar el code haciendo un step 2 (haciendo esto para que te alcancen los numeros)
01 = a
02 = b
03 = c
04 = d
mira te dejo un ejemplo :
'Code by Rembolso
' usando step y optimizando codigo
Const Minus As String = "abcdefghijklmnñopqrstuvwxyz"
Private Function EncriStep(Datos As String)
Dim i, Buff As String
For i = 1 To Len(Datos)
If InStr(1, Minus, Mid(Datos, i, 1)) <= 9 Then
Buff = Buff & "0" & InStr(1, Minus, Mid(Datos, i, 1))
Else
Buff = Buff & InStr(1, Minus, Mid(Datos, i, 1))
End If
Next i
EncriStep = Buff
End Function
Private Function DescipStep(Datos As String)
Dim i, Buff As String
For i = 1 To Len(Datos) Step 2
If InStr(1, Mid(Datos, i, 2), "0") = 1 Then
Buff = Buff & Mid(Minus, Replace(Mid(Datos, i, 2), 0, ""), 1)
Else
Buff = Buff & Mid(Minus, Mid(Datos, i, 2), 1)
End If
Next i
DescipStep = Buff
End Function
'ejemplo con msgbox
msgbox EncriStep("abcdefgho")
MsgBox DescipStep(EncriStep("abcdefgho"))
Como ya han resuelto tu duda sólo me pondré tiquismiquis y añadiré estos dos puntos:
- Tu duda es con .NET (VB > 6 es ya .NET). Así que está en la sección equivocada.
- "encriptador" no es equivalente a "encryptor" del inglés, sería aquél que mete cosas en una cripta :xD. Por lo tanto el término correcto es "cifrador", y no "encriptador".
Saludos.
Gracias por responder, entiendo a que se refieren.
Yo hice algo sumamente sencillo (tal vez ese fue mi error), estoy utilizando la instrucción "Replace" para reemplazar una letra por un número, sería esto:
Text1.Text = Replace(Text1.Text, "L", "12")
Y para la operación contraria, escribí:
Text1.Text = Replace(Text1.Text, "12", "L")
Mi duda es:
¿Cómo hay que indicarle a la instrucción "Replace" que tome el 12 como un único valor numérico en lugar de una cadena de dos caracteres?