Public Class Class1
Shared Function Scambio(ByVal readStr As String) As String
Return readStr(3) + readStr(2) + readStr(1) + readStr(0)
End Function
Shared Function EncodeControl(ByVal readStr As String) As Boolean
EncodeControl = True
For i As Integer = 1 To readStr.Length
If Not ((Asc(readStr(i - 1)) > 31) And (Asc(readStr(i - 1)) < 127)) Then
Return False
End If
Next
Return True
End Function
Shared Function DecodeControl(ByVal readStr As String) As Boolean
Dim List(30) As Char
For i As Integer = 0 To 9
List(i) = New Char
List(i) = i.ToString
Next
Dim k As Integer
k = 10
For i As Integer = 65 To 70
List(k) = New Char
List(k) = Chr(i)
k = k + 1
Next
List(k) = "%"
DecodeControl = True
Dim Control As Boolean = False
For i As Integer = 1 To readStr.Length
For t As Integer = 0 To 16
If readStr(i - 1) = List(t) Then
Control = True
End If
Next
If Control = True Then
Control = False
Else : Return False
End If
Next
Return True
End Function
Shared Function Encode(ByVal readStr As String) As String
Dim stringa, blocco1, blocco2, cars As String
If readStr = "" Then
Return "%%"
Else
stringa = ""
blocco1 = ""
blocco2 = ""
cars = ""
For k As Integer = 0 To readStr.Length - 1
cars = Convert.ToString(Asc(readStr(k)), 2)
While cars.Length <> 8
cars = "0" + cars
End While
For i As Integer = 0 To 3
blocco1 = blocco1 + cars(i)
Next
For i As Int16 = 4 To 7
blocco2 = blocco2 + cars(i)
Next
blocco1 = Scambio(blocco1)
blocco2 = Scambio(blocco2)
Dim num1 As Integer = Convert.ToInt32(blocco1, 2)
stringa = stringa + Convert.ToString(num1, 16)
stringa = stringa.ToUpper
Dim num2 As Integer = Convert.ToInt32(blocco2, 2)
stringa = stringa + Convert.ToString(num2, 16)
stringa = stringa.ToUpper
blocco1 = ""
blocco2 = ""
Next
Return stringa
End If
End Function
Shared Function DecodeConverter(ByVal readChar As Char) As String
Dim ToInt As Integer
Dim ToStr As String
Dim pass As Integer = Asc(readChar) - 48
If pass < 10 Then
ToInt = pass
Else
Select Case readChar
Case "A"
ToInt = 10
Case "B"
ToInt = 11
Case "C"
ToInt = 12
Case "D"
ToInt = 13
Case "E"
ToInt = 14
Case "F"
ToInt = 15
End Select
End If
ToStr = Convert.ToString(ToInt, 2)
If ToStr.Length < 4 Then
While Not (ToStr.Length = 4)
ToStr = "0" + ToStr
End While
End If
Return ToStr
End Function
Shared Function BinToDec(ByVal num As Integer) As String
If (num = 0) Or (num = 1) Then
Return num
Else
Dim i As Integer = 1
Dim cod As String = num.ToString
Dim som As Integer = Asc(cod(0)) - 48
For i = 2 To (num.ToString).Length
som = (som * 2) + (Asc(cod(i - 1)) - 48)
Next
Return som
End If
End Function
Shared Function Decode(ByVal readStr As String) As String
Dim s, decodeStr As String
decodeStr = ""
If readStr = "%%" Then
Return Nothing
Else
Dim i As Integer = 1
While i < readStr.Length
s = Scambio(DecodeConverter(readStr(i - 1))) + Scambio(DecodeConverter(readStr(i)))
Dim int As Integer = Convert.ToInt32(s)
decodeStr = decodeStr + Chr(BinToDec(int))
i = i + 2
End While
If (readStr.Length Mod 2) <> 0 Then
decodeStr = decodeStr + "\"
End If
End If
Return decodeStr
End Function
End Class