[..] Traduction Binaire -> Index ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Sparkdaemon
Niveau 3
Niveau 3
Messages : 38
Enregistré le : jeu. 04 mars 2010 19:18
Localisation : $Coord
Status : Hors ligne

[..] Traduction Binaire -> Index ?

#1

Message par Sparkdaemon »

Bonjour a tous,
Tout d'abord, merci a Tlem pour la réponse pour traduire de l'héxa vers le binaire,
Un nouveau souci viens me perturber..

Je sépare mes 'numéros' binaires pour par la suite les convertir en numéros allant de 1 a 15

0000 est 1, et 1111 est 15,
J'ai crée une fonction, qui vérifiait après le Split si la variable était bien un array,

Code : Tout sélectionner

If isarray($split) then
...
endif
L'array était bien O.K, mais quand j'ai essayé de traiter ma variable, et de remplacer le binaire par l'index, ça m'a retourné une érreur..
J'ai supprimé mon code, et repris celui de Tlem, mais je ne sait pas trop comment faire mon algorithme..

Code : Tout sélectionner

Func _HexToBinaryString($HexValue)
    Local $Allowed = '0123456789ABCDEF'
    Local $Test, $n
    Local $Result = '', $index = ''
    If $HexValue = '' Then
        SetError(-2)
        Return
    EndIf
    TrayTip("", "Step 3", 0)
    $HexValue = StringSplit($HexValue, '')
    For $n = 1 To $HexValue[0]
        If Not StringInStr($Allowed, $HexValue[$n]) Then
            TrayTip("", $n&" sur "&$HexValue[0], 0)
            SetError(-1)
            Return 0
        EndIf
    Next
    TrayTip("", "Step 4", 0)

    Local $bits = "0000|0001|0010|0011|0100|0101|0110|0111|1000|1001|1010|1011|1100|1101|1110|1111"
    $bits = StringSplit($bits, '|')
    For $n = 1 To $HexValue[0]
        $Result &= $bits[Dec($HexValue[$n]) + 1] & "."
    Next

    Return $Result

EndFunc   ;==>_HexToBinaryString
J'espère que mon souci est clair.. ^^
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Traduction Binaire -> Index ?

#2

Message par Tlem »

Sparkdaemon a écrit :Je sépare mes 'numéros' binaires pour par la suite les convertir en numéros allant de 1 a 15

0000 est 1, et 1111 est 15
Je pense que votre réflexion est erronée, car à première vue, vous voulez convertir un binaire en décimal, et dans ce cas, 0000 = 0, 0001 = 1, 0010 = 2, ..., 1111 = 15.

Donc deux solutions :
1- Utiliser le nombre hexadécimal pour le convertir en binaire + décimal afin de créer votre tableau.

2- Utiliser un fonction qui vous permettra de convertir le binaire en décimal.
Dans ce cas, je vous renvoie vers le message d'origine de la fonction _HexToBinaryString(), qui intègre d'autre fonction tel que (comme par hasard) _BinaryToDec(). ;)
Le sujet est ici : http://www.autoitscript.com/forum/index ... opic=70507

Amusez vous bien. :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre