Voila, ce code ne met pas en oeuvre un calcul de base (je pense qu'il y en a deja assez en vb6, la maniere n'a pas lieu d'etre changé (à une expression pret) en vb.net vu que ce n'est que des calculs), mais il utilise simplement les fonctions de vb.net prévues à cet effet . plus ou moins rapides, il faudrait faire des tests... mais vu que ici, le code est limité aux capacités d'un type Long, je pense que la difference ne se ferait humainement pas sentir... enfin si les conversions ne sont pas faites en boucles. Bref, à vous de voir. :)
Source / Exemple :
'On prend donc en compte que l'on à 4 textbox nommées : "decitxt", "bintxt", "octtxt", "hextxt" dont les noms sont, je pense, assez explicites pour m'eviter d'expliquer le role de chacuns
'Les procédures de conversions
' la syntaxe : Convert.le_type_voulut(la_valeur_de_depart,le mode de conversion*) *ici la base de conversion
Public Sub convertfrombase10(ByVal dec As String)
bintxt.Text = Convert.ToString(CLng(dec), 2) 'converti la valeur Long de "dec" en base 2
octtxt.Text = Convert.ToString(CLng(dec), 8) 'converti la valeur Long de "dec" en base 8
hextxt.Text = Convert.ToString(CLng(dec), 16) 'converti la valeur Long de "dec" en base 16
End Sub
Public Sub convertfrombase2(ByVal binr As String)
decitxt.Text = Convert.ToInt64(binr, 2) 'converti en type int64(equivalent de long) et en base 10 la valeur de "binr" à partir d'une base 2
bintxt.Text = Convert.ToString(CLng(decitxt.Text), 8) 'converti la valeur Long de decitxt.text en base 8
hextxt.Text = Convert.ToString(CLng(decitxt.Text), 16) 'converti la valeur Long de decitxt.text en base 16
End Sub
Public Sub convertfrombase8(ByVal octal As String)
decitxt.Text = Convert.ToInt64(octal, 8) 'converti en type int64 (equivalent de long) et en base10 la valeur de "octal" à partir d'une base 8
bintxt.Text = Convert.ToString(CLng(decitxt.Text), 2) 'converti la valeur Long de decitxt.text en base 2
hextxt.Text = Convert.ToString(CLng(decitxt.Text), 16) 'converti la valeur Long de decitxt.text en base 16
End Sub
Public Sub convertfrombase16(ByVal hexa As String)
decitxt.Text = Convert.ToInt64(hexa, 16) 'converti en type int64(equivalent de long) et en base 10 la valeur de "hexa" à partir d'une base 16
bintxt.Text = Convert.ToString(CLng(decitxt.Text), 2) 'converti la valeur Long de decitxt.text en base 2
octtxt.Text = Convert.ToString(CLng(decitxt.Text), 8) 'converti la valeur Long de decitxt.text en base 8
End Sub
'Les procédures de limitation de saisie de charactères :
'on limite aux caractères autorisés pour les bases, ainsi qu'à la touche "back"
Private Sub decitxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles decitxt.KeyPress
'tout chiffre, de 0 à 9
If e.KeyChar.IsDigit(e.KeyChar) = False And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
End Sub
Private Sub bintxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles bintxt.KeyPress
'0 ou 1
If Asc(e.KeyChar) <> 48 And Asc(e.KeyChar) <> 49 And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back Then e.Handled = True
End Sub
Private Sub octtxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles octtxt.KeyPress
'de 0 a 7
If Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 55 And Asc(e.KeyChar) = System.Windows.Forms.Keys.Back Then e.Handled = False Else e.Handled = True
End Sub
Private Sub hextxt_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles hextxt.KeyPress
'tout chiffre de 0 à 9 et les charactéres A,B,C,D,E,F (majuscules seulement)
If e.KeyChar.IsDigit(e.KeyChar) = True Or (Asc(e.KeyChar) >= 65 And Asc(e.KeyChar) <= 70) Or Asc(e.KeyChar) = System.Windows.Forms.Keys.Back Then e.Handled = False Else e.Handled = True
End Sub
'le lancement des procédures de conversions par l'evenement keyup
'je met une gestion d'erreur, en cas par exemple de depassement de capacité d'un long
Private Sub decitxt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles decitxt.KeyUp
Try
convertfrombase10(decitxt.Text)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
Private Sub bintxt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles bintxt.KeyUp
Try
convertfrombase2(bintxt.Text)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
Private Sub octtxt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles octtxt.KeyUp
Try
convertfrombase8(octtxt.Text)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
Private Sub hextxt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles hextxt.KeyUp
Try
convertfrombase16(hextxt.Text)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
Conclusion :
bah d'habitude j'ai pas grand chose à dire pour conclure mais la, encore moins. mais ca y est, j'ai comblé :) .
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.