Function RecoverAddress(ByVal value As Integer) As String 'TODO: Rajouter le code de contrôle/vérification Dim r1, main, middle, sube As Integer main = Math.DivRem(value, 2048, r1) middle = Math.DivRem(r1, 256, sube) ' pour retrouver le format initial Return String.Format("{0}/{1}/{2}", main, middle, sube) End Function
Function NumericAddress(ByVal address As [String]) As Integer '... If token.Length <> 3 Then Throw New ArgumentException() 'par exemple Dim main As Integer = Convert.ToInt32(token(0)) '... End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim a, b, ab As String a = textToBin(2) b = textToBin(78) ab = a & b Dim sm, se As String se = Mid(ab, 2, 4) sm = Mid(ab, 1, 1) & Mid(ab, 5, 12) '(0.01*M)*2^E TextBox2.Text = (0.01 * binToText(sm)) * 2 ^ binToText(se) End Sub
Private Function textToBin(ByVal x As Long) As String Dim temp As String temp = "" Do If x Mod 2 Then temp = "1" + temp Else temp = "0" + temp End If x = x \ 2 If x < 1 Then Exit Do Loop ' Dim i As Integer i = temp.Length For j = i To 7 temp = 0 & temp Next Return temp End Function
Function binToText(ByVal strVal As String) As Single Dim i As Integer Dim j As Integer Dim r As Single For i = Len(strVal) To 1 Step -1 r = r + CInt(Mid(strVal, i, 1)) * 2 ^ j j = j + 1 Next i binToText = r Return r End Function
If x Mod 2 Then temp = "1" + temp Else temp = "0" + temp End If
temp = (x Mod 2) & temp ' à la limite rajouter un .ToString() après la parenthèse
Do '... Loop Until x = 0 'On boucle jusqu'à ce que x vaille 0
temp = temp.PadLeft(8, "0"c)
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click TextBox2.Text = ExecuteFormula(2, 78).ToString() End Sub ' J'ai hésité puis, finalement j'ai décidé de faire une fonction ' Calculer la fonction Et l'afficher sont deux choses différentes (penser à nommer différemment si cette formule à un meilleur nom) Private Function ExecuteFormula(ByVal first As Integer, ByVal second As Integer) As Single ' à voir si Single offre suffisamment de précision, sinon utiliser Double ou Decimal Dim fstVal, sndVal, eVal, mVal As String ' Note si jamais c'est trop d'un coup on peut très bien faire le Normalize ensuite ' ex: fstVal = Normalize(fstVal) fstVal = Normalize(DecToBin(first)) sndVal = Normalize(DecToBin(second)) eVal = fstVal.Substring(1, 4) mVal = fstVal(0) & fstVal.Substring(5) & sndVal '0.01 * M * 2 ^ E (pas besoin de parenthèses, la priorité opératoire suffit) Return = 0.01 * BinToDec(mVal) * 2 ^ BinToDec(eVal) End Sub ' J'ai décidé de renommer ça en DecToBin, ça reflète mieux ce que ça fait ' Et puis une fonction qui dit transformer du texte en binaire mais qui renvoie du texte c'est bizarre, non ? Private Function DecToBin(ByVal value As Integer) As String ' Je préfère nommer ma variable résultat "result" c'est plus parlant ' String.Empty est strictement équivalent à "" c'est juste une préférence perso Dim result As String = String.Empty Do result = (x Mod 2).ToString() & result x \= 2 ' notation raccourcie pour dire x = x \ 2 Loop Until x = 0 Return result End Function Private Function Normalize(ByVal binaryNumber As String) As String Return binaryNumber.PadLeft(8, "0"c) End Function ' Cette fonction ne peut pas renvoyer de nombre à virgule, Single n'est donc pas justifié ici Private Function BinToDec(ByVal binaryNumber As String) As Integer Dim result, exponent As Integer result = 0 exponent = 0 ' Ici j'utilise un type de boucle particulier, qui sert à parcourir chaque élément d'une liste/collection ' Donc pour un String (qui n'est rien de plus qu'un tableau de caractères) elle parcourra chaque chiffre du nombre binaire For Each binDigit In binaryNumber result += Int32.Parse(binDigit) * 2 ^ exponent exponent += 1 Next Return result End Function
' Cette fonction ne peut pas renvoyer de nombre à virgule, Single n'est donc pas justifié ici Private Function BinToDec(ByVal binaryNumber As String) As Integer Dim result, exponent As Integer result = 0 exponent = binaryNumber.Length - 1 ' Ici j'utilise un type de boucle particulier, qui sert à parcourir chaque élément d'une liste/collection ' Donc pour un String (qui n'est rien de plus qu'un tableau de caractères) elle parcourra chaque chiffre du nombre binaire For Each binDigit In binaryNumber result += Int32.Parse(binDigit) * Convert.ToInt32(2 ^ exponent) ' J'ai rajouté une conversion ici pour la même raison évoquée sur ma configuration en début de post exponent -= 1 Next Return result End Function
Public Function Convert_Tab_Binaire(ByVal Entier As UInteger) As Boolean() 'Auteur: CGSI3 But: Convertir un UInteger en tableau de binaire Dim binaryVal As String = Convert.ToString(Entier, 2) Dim Retour() As Boolean, p As Integer, Cpt As Integer, Cp2 As Integer = binaryVal.Length - 1 ReDim Retour(Cp2) For Cpt = 0 To Cp2 p = Val(Mid(binaryVal, Cpt + 1, 1)) Retour(Cp2 - Cpt) (p 1) Next Cpt Return Retour End Function Public Function MakeShort(ByVal bLow As Byte, ByVal bHigh As Byte) As Short 'Auteur: CGSI3 But: Retourne un short depuis 2 Bytes Dim Valeur As Byte = 3, Som As Short, by(1) As Byte by(0) bHigh : by(1) bLow : Som = BitConverter.ToInt16(by, 0) Return Som End Function