The Meteorologist
Messages postés232Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 3 novembre 2011
-
27 juin 2009 à 16:10
marthieu
Messages postés1Date d'inscriptiondimanche 14 août 2005StatutMembreDernière intervention27 juin 2009
-
27 juin 2009 à 20:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
marthieu
Messages postés1Date d'inscriptiondimanche 14 août 2005StatutMembreDernière intervention27 juin 2009 27 juin 2009 à 20:00
Euhmm, ouais j'avais vraiment pas penser a ça. Et pour avoir le code ASCII j'ai decouvert la fonction il y a quelque heure.
Merci
The Meteorologist
Messages postés232Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 3 novembre 20111 27 juin 2009 à 16:25
Voilà comment tu pourrais faire par exemple :
Dim s1 As String = "Bonjour"
Dim s2 As String = "1d2d3q4"
If s1.Length = s2.Length Then
Dim sb As New System.Text.StringBuilder(s1.Length)
For i As Integer = 0 To s1.Length - 1
sb.Append(Convert.ToChar(Convert.ToInt32(s1.Chars(i)) Xor Convert.ToInt32(s2.Chars(i))))
Next
' Résultat : sb.ToString.
' N.B. Il vaut mieux utiliser un tableau d'octets car si la chaîne contient la caractère 0, elle sera tronquée.
End If
++
Simon
The Meteorologist
Messages postés232Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 3 novembre 20111 27 juin 2009 à 16:10
Salut marthieu, tu t'y prends très très mal ... D'abord parce que ta fonction ToNumber() est absolument abominable. Je pense que tu comprendras pourquoi ... 256 ElseIf ce c'est pas très joli, surtout que tu peux remplacer tout UNE SEULE LIGNE en récupérant l'index sur la table ASCII du caractère. Mais en plus en binaire pour "combiner" deux octets, pas la peine d'additionner leur valeur numérique et de moduler, un simple XOR suffit. En gros tu peux réduire ton programme à 15 lignes à peines =/, du moins pour la partie codage/décodage.
27 juin 2009 à 20:00
Merci
27 juin 2009 à 16:25
Dim s1 As String = "Bonjour"
Dim s2 As String = "1d2d3q4"
If s1.Length = s2.Length Then
Dim sb As New System.Text.StringBuilder(s1.Length)
For i As Integer = 0 To s1.Length - 1
sb.Append(Convert.ToChar(Convert.ToInt32(s1.Chars(i)) Xor Convert.ToInt32(s2.Chars(i))))
Next
' Résultat : sb.ToString.
' N.B. Il vaut mieux utiliser un tableau d'octets car si la chaîne contient la caractère 0, elle sera tronquée.
End If
++
Simon
27 juin 2009 à 16:10