Convertitore decimale-binario

« Older   Newer »
  Share  
Sbarabau
CAT_IMG Posted on 1/5/2010, 14:01     +1   -1




Dopo un po' di tempo senza programmare ecco qui un piccolo programma fatto in giornata che converte numeri decimale in binario e viceversa.
Fin'ora ho riscontrato solo un piccolo bug che non riesco a correggere: una volta cliccato su "crypt", bisogna richicclare 2 volte per criptare nuovamente un altro numero. ce se ne rende conto meglio provando xD
L'UDF MsgBox la si puņ trovare nell'apposita sezione di questo forum!

SPOILER (click to view)
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


File .rar: www.megaupload.com/?d=8RFC43HU
 
Top
Kurt_Black_hat 2.0
CAT_IMG Posted on 2/5/2010, 02:53     +1   -1




Very good :P
 
Top
1 replies since 1/5/2010, 14:01   269 views
  Share