IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Que veux dire if (Byte1 and 64) > 0 then?


Sujet :

VBScript

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut Que veux dire if (Byte1 and 64) > 0 then?
    Bonjour,

    J'ai récupéré un programme en VBscript, et dans celui ci j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	tmpEDIDMfg=mid(strEDID,&H08+1,2)
    	Char1=0 : Char2=0 : Char3=0
    	Byte1=asc(left(tmpEDIDMfg,1)) 'get the first half of the string
    	Byte2=asc(right(tmpEDIDMfg,1)) 'get the first half of the string
     
    	if (Byte1 and 64) > 0 then Char1=Char1+16
            '............... plusieurs lignes similaires 
    	Char3=Char3+(Byte2 and 16)
            '............... plusieurs lignes similaires
    Je ne comprends pas ce que ca fait... Principalement les "(Byte1 and 64)". Pourriez-vous m'aider? Merci

    PS: le principe est de convertir en C#...

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    c'est une comparaison binaire avec l'opérateur AND...
    ce n'est pas spécifique au VBS et on le rencontre aussi en c#
    la comparaison avec le masque 64 (ou 1000000 en binaire) signifie que tu testes
    la présence du bit de rang 6 donc une valeur entre 64 et 127 ou entre 192 et 255
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par omen999 Voir le message
    bonjour,
    c'est une comparaison binaire avec l'opérateur AND...
    ce n'est pas spécifique au VBS et on le rencontre aussi en c#
    la comparaison avec le masque 64 (ou 1000000 en binaire) signifie que tu testes
    la présence du bit de rang 6 donc une valeur entre 64 et 127 ou entre 192 et 255
    Merci, j'ai eu la réponse.

    Par contre j'ai un problème, mon code que j'ai convertis en C# ne me donne pas ce que je souhaite... Je devrais trouver HWP hors il me sort HQ_
    Le code c# (pour infor, ca récupère le ManufacturerID dans les infos EDID du moniteur, informations se trouvant aux Bytes 8 et 9 de l'EDID):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    static string GetManufacturerID(Byte[] bObj)
            {
                int Char1 = 0;
                int Char2 = 0;
                int Char3 = 0;
                string TempsEDIDMfg = Encoding.Default.GetString(bObj, 0x08, 2);
                int Byte1 = Convert.ToInt32(Encoding.ASCII.GetBytes(TempsEDIDMfg.Substring(0, 1))[0]);
                int Byte2 = Convert.ToInt32(Encoding.ASCII.GetBytes(TempsEDIDMfg.Substring(TempsEDIDMfg.Length - 1, 1))[0]);
                if ((Byte1 & 0x40) > 0) Char1 += 16;
                if ((Byte1 & 0x20) > 0) Char1 += 8;
                if ((Byte1 & 0x10) > 0) Char1 += 4;
                if ((Byte1 & 0x08) > 0) Char1 += 2;
                if ((Byte1 & 0x04) > 0) Char1 += 1;
     
                if ((Byte1 & 0x02) > 0) Char2 += 16;
                if ((Byte1 & 0x01) > 0) Char2 += 8;
                if ((Byte2 & 0x80) > 0) Char2 += 4;
                if ((Byte2 & 0x40) > 0) Char2 += 2;
                if ((Byte2 & 0x20) > 0) Char2 += 1;
     
                if ((Byte2 & 0x10) > 0) Char3 += 16;
                if ((Byte2 & 0x08) > 0) Char3 += 8;
                if ((Byte2 & 0x04) > 0) Char3 += 4;
                if ((Byte2 & 0x02) > 0) Char3 += 2;
                if ((Byte2 & 0x01) > 0) Char3 += 1;
     
                Char1 += 64;
                Char2 += 64;
                Char3 += 64;
     
     
                char CChar1 = Convert.ToChar(Char1);
                char CChar2 = Convert.ToChar(Char2);
                char CChar3 = Convert.ToChar(Char3);
     
                return CChar1.ToString() + CChar2.ToString() + CChar3.ToString();
            }

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/09/2008, 18h11
  2. Réponses: 1
    Dernier message: 15/03/2007, 12h25
  3. Que veux dire _("chaine") sous gnu/linux?
    Par trois_1 dans le forum C
    Réponses: 3
    Dernier message: 25/08/2006, 14h12
  4. Que veux dire cette fonction
    Par Vlacar dans le forum ASP
    Réponses: 2
    Dernier message: 10/04/2006, 13h28
  5. que veux dire complexitée ...
    Par phakso dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 04/03/2006, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo