CODICE
#include <GuiConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBox.au3>
#include <String.au3>
#NoTrayIcon
Global $Risultato_Temporaneo_Binario, $Risultato_Binario, $Risultato_Binario_Finito = False
$Gui = GUICreate ("Convertitore decimale-binario", 350, 132)
GUISetState (@SW_SHOW)
GUICtrlCreateLabel ("Convertitore decimale-binario", 5, 5, 300, 35)
GUICtrlSetFont(-1, 13, 600, 2, "Gill Sans Ultra Bold Condensed")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Decimale = GUICtrlCreateInput ("", 5, 35, 275, 22, 0x2000)
$Binario = GUICtrlCreateInput ("", 5, 62, 275, 22, 0x2000)
$Bottone_Decimale = GUICtrlCreateButton ("Crypt", 285, 35, 60, 22)
$Bottone_Binario = GUICtrlCreateButton ("Decrypt", 285, 62, 60, 22)
$Istruzioni = GUICtrlCreateLabel ("Inserire un numero da criptare o un codice binario da decriptare", 7, 95, 345, 20)
GUISetState (@SW_SHOW)
While 1=1
Switch GUIGetMsg ()
Case $Bottone_Decimale
$Leggi_Decimale = Number (GUICtrlRead ($Decimale))
If $Leggi_Decimale = "" Then
MsgBox ($Avviso_Ok, "Attenzione", "Inserire un numero da criptare!")
Else
GUICtrlSetData ($Istruzioni, "Criptaggio in corso...")
Sleep (250)
GUICtrlSetData ($Binario, _Base2_Encrypt ($Leggi_Decimale))
GUICtrlSetData ($Istruzioni, "Criptaggio completato")
Sleep (500)
GUICtrlSetData ($Istruzioni, "Inserire un numero da criptare o un codice binario da decriptare")
EndIf
Case $Bottone_Binario
$Leggi_Binario = Number (GUICtrlRead ($Binario))
If $Leggi_Binario = "" Then
MsgBox ($Avviso_Ok, "Attenzione", "Inserire un codice binario da decriptare!")
Else
GUICtrlSetData ($Istruzioni, "Decriptaggio in corso...")
Sleep (250)
GUICtrlSetData ($Decimale, _Base2_Decrypt ($Leggi_Binario))
GUICtrlSetData ($Istruzioni, "Decriptaggio completato")
Sleep (500)
GUICtrlSetData ($Istruzioni, "Inserire un numero da criptare o un codice binario da decriptare")
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
#Region Crypt
Func _Base2_Encrypt ($Codice_Decimale)
If $Risultato_Binario_Finito = True Then
$Risultato_Temporaneo_Binario = ""
$Risultato_Binario_Finito = False
Else
_Dividi ($Codice_Decimale)
EndIf
If $Risultato_Binario_Finito = True Then Return _StringReverse ($Risultato_Binario)
EndFunc
Func _Dividi ($Numero)
$Divisione = $Numero / 2
If IsInt ($Divisione) Then
$Risultato_Temporaneo_Binario &= "0"
Else
$Risultato_Temporaneo_Binario &= "1"
EndIf
If Int ($Divisione) = 0 Then
$Risultato_Binario_Finito = True
$Risultato_Binario = $Risultato_Temporaneo_Binario
Else
$Risultato_Binario_Finito = False
_Base2_Encrypt (Int ($Divisione))
EndIf
EndFunc
#EndRegion
#Region Decrypt
Func _Base2_Decrypt ($Codice_Binario)
Local $Risultato_Decimale = ""
; Binario --> Decimale
$Lunghezza_Binario = StringLen ($Codice_Binario)
$Risultato_Decimale = 0
For $i = 1 To $Lunghezza_Binario
$Controlla_Se_1 = StringLeft (StringRight ($Codice_Binario, $i), 1)
If $Controlla_Se_1 = 1 Then
$Calcola_Esponente = $i - 1
$Risultato_Temporaneo_Decimale = _Potenza (2, $Calcola_Esponente)
$Risultato_Decimale += $Risultato_Temporaneo_Decimale
EndIf
Next
Return Number ($Risultato_Decimale)
EndFunc
Func _Potenza ($Base, $Esponente)
Local $Elevamento = ""
; Elevamento a potenza
If Number ($Esponente) = 0 Then
Return 1
Else
For $i2 = 1 To Number ($Esponente)
If $i2 = 1 Then
$Elevamento = $Base
Else
$Elevamento = $Elevamento * Number ($Base)
EndIf
Next
Return Number ($Elevamento)
EndIf
EndFunc
#EndRegion