1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Comment convertir une chaîne en binaire?

Discussion dans 'Résolution problème & conseils' créé par saad27, Déc 18, 2018.

  1. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66
    Bonjour Fekwx,

    Jai un tit question comment on peut convertir une chaîne en binaire avec windev.

    Merci
    Saad
     
    Tags:
  2. WX1331

    WX1331 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    610
    J'aime reçus:
    670
    J'ai trouvé ça en cherchant avec google mais Décimal vers Binaire et Binaire Vers Chaine.

    // Procédure globale VersBinaire : DECIMAL -> CHAINE de 010011
    function VersBinaire(NOMBRE)
    ch est une chaine
    nb est un entier long
    nb = NOMBRE
    ch = ""
    tantque nb > 0
    si modulo(nb,2) alors
    ch = "1" + ch
    sinon
    ch = "0" + ch
    fin
    nb = nb/2
    fin
    renvoyer Ch
    // Procédure globale BinaireVersChaine : CHAINE de 010011 -> DECIMAL
    cBin est une chaine = CHAINEBINAIRE
    i est un entier
    j est un entier
    eDecimal est un entier
    eTemp est un entier
    pour i = taille (cBin) à 1 pas -1
    eTemp = 2*val (cBin[[i à i]])
    si eTemp alors
    eDecimal += puissance (eTemp,j)
    FIN
    j++
    FIN
    renvoyer eDecimal

    sachant que ce code n'est pas à moi dont voiçi le site

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    salutations
     
    suenodesign et michel aiment ça.
  3. Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134
    Code (Windev):
    sTexteBrut est une chaîne    = "windev"
    sTexteBinaire est une chaîne
    POUR i=1 _À_

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBrut)
        nEntier est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBrut[i])
         
        POUR j=8 _À_ 1 PAS -1
            sTexteBinaire    += nEntier[j]
        FIN
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBinaire)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBinaire)
     
     
  4. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66
    MErci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Mais cela ne marche pas.

    Ofais ils me faut convertir par ex:
    chaine Binaire
    a : 01000001

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Wep man..
    Sa marche...!!!
    Maintenant si je veux par exemple extraire tout le caractère de cette chaîne : MYWORLD
    m en binaire =01101101
    y en binaire=01111001
    puis faire une somme du binaire
    pouvez-vous me montrer la marche à suivre
    Merci
    SAAD
     
    #4 saad27, Déc 18, 2018
    Dernière édition: Déc 18, 2018
  5. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    je le reçois dans ce format au lieu de dessous
    0
    0
    0
    0
    0
    0
    0
    0
    0
    1
    1
    0
    0
    0
    0
    1
    0
    0
    0
    0
    0
    0
    0
    0
    0
    1
    1
    0
    0
    0
    1
    0

    BON Version format:
    0000000001100001
    0000000001100010

    Code utilisé

    sTexteBrut est une chaîne = "ab"
    sTexteBinaire est une chaîne

    POUR i=1 _A_ Length(sTexteBrut)
    nEntier is int = Asc(sTexteBrut[])

    POUR j=16 _A_ 1 PAS -1


    sTexteBinaire += nEntier[j]


    EDT_Result+=nEntier[j]
    FIN
    FIN

    ToClipboard(sTexteBinaire)




     
  6. Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , si tu veux addition deux "chaine binaire"

    Code (Windev):

    n est un entier  =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("01101101",2)
    m est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("01111001",2)

    o est un entier = n+m

    sTexteBinaire est une chaîne

    POUR j=16 _À_ 1 PAS -1
       
       
        sTexteBinaire += o[j]
       
       
        //EDT_Result+=nEntier[j]
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBinaire)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBinaire)
     
    A voir de ton côté si c'est bien le résultat attendu (la notion d'addition de bit peut être plus complexe ^^)...
     
  7. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Super merci..
    mais le code binaire sera généré comme ceci dans une chaîne, comment puis-je ajouter tous?

    Code utiler :



    CHar1 is string = Charact(1)
    CHar2 is string = Charact(2)
    CHar3 is string = Charact(:relievedface:
    CHar4 is string = Charact(4)
    FS is string = Charact(28)

    BufMbusWriteQuery is string


    BufMbusWriteQuery=CHar1+"000000099opera "+CHar2+FS+"05 FO_FI_RES_QUERY"+FS+"820"+CHar3+"0B56"+CHar4

    sTexteBrut est une chaîne = "000000099opera "+CHar2+FS+"05 FO_FI_RES_QUERY"+FS+"820"+CHar3
    //sTexteBrut est une chaîne = "ab"

    sTexteBinaire est une chaîne

    POUR i=1 _A_ Length(sTexteBrut)
    nEntier is int= Asc(sTexteBrut[])

    POUR j=16 _A_ 1 PAS -1


    sTexteBinaire += nEntier[j]


    EDT_Result+=nEntier[j]

    Checklen is string=Length(EDT_Result)

    IF Checklen =16 THEN

    EDT_Final+=CR+EDT_Result
    EDT_Total+=EDT_Result

    EDT_Result=""


    END



    FIN
    FIN




    0000000000110000
    0000000000110000
    0000000000110000
    0000000000110000
    0000000000110000
    0000000000110000
    0000000000110000
    0000000000111001
    0000000000111001
    0000000001101111
    0000000001110000
    0000000001100101
    0000000001110010
    0000000001100001
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000100000
    0000000000000010
    0000000000011100
    0000000000110000
    0000000000110101
    0000000000100000
    0000000001000110
    0000000001001111
    0000000001011111
    0000000001000110
    0000000001001001
    0000000001011111
    0000000001010010
    0000000001000101
    0000000001010011
    0000000001011111
    0000000001010001
    0000000001010101
    0000000001000101
    0000000001010010
    0000000001011001
    0000000000011100
    0000000000111000
    0000000000110010
    0000000000110000
    0000000000000011
     
  8. Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134
    Si j'ai bien compris, tu veux additionner l'ensemble des lignes binaires en une seule?

    Voici ce que tu peux rajouter a la fin de ton code :

    Code (Windev):

    nTotal est un entier
    sChaineBinaireFinal est une chaîne

    POUR TOUT CHAÎNE sBinaire DE EDT_Final SEPAREE PAR RC
       nTotal +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sBinaire[[9 À ]],2) // car 16 bit, sinon si 8 bit sBinaire seulement
    FIN

    POUR j=16 _À_ 1 PAS -1
        sChaineBinaireFinal    += nTotal[j]  
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sChaineBinaireFinal)
     
    Par contre la procédure final n'est pas optimisé (Pour optimiser, autant additionner dès le début la valeur des codes ASCII et ensuite générer la chaine binaire) ;)

    Code (Windev):

    CHar1 is string =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (1)
    CHar2 is string =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (2)
    CHar3 is string =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (3)
    CHar4 is string =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (4)
    FS is string =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (28)

    BufMbusWriteQuery is string
    EDT_Result  is string

    BufMbusWriteQuery=CHar1+"000000099opera "+CHar2+FS+"05 FO_FI_RES_QUERY"+FS+"820"+CHar3+"0B56"+CHar4

    sTexteBrut est une chaîne = "000000099opera "+CHar2+FS+"05 FO_FI_RES_QUERY"+FS+"820"+CHar3
    //sTexteBrut est une chaîne = "ab"

    sTexteBinaire est une chaîne

    nEntier is int

    POUR i=1 _À_

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBrut)
        nEntier +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sTexteBrut[i])
    FIN

    POUR j=16 _À_ 1 PAS -1  
        sTexteBinaire += nEntier[j]

        EDT_Result+=nEntier[j]
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (EDT_Result)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (EDT_Result)
     
     
  9. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Merci.
    ce que je voulais mainteant je dois juste convertir le resulta en ASCII-Hex.

    Existe-t-il un autre moyen de faire la séparation à la place en utilisant ce code?

    Checklen is string=Length(EDT_Result)

    IF Checklen =16 THEN

    EDT_Final+=CR+EDT_Result
     
  10. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    je vais te déranger une fois de plus,
    Tu peut me dire un code pour convertir cela "0000101101010110" en hexadécimal ce qui devrait me donner "0B56" comme résultat
    Merci pour ton aide..
    Saad
     
  11. Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , il faut passer par le biais de la fonction "EntierVersHexa"

    Exemple :

    Code (Windev):


    sChaineBinaire est une chaîne = "0000101101010110"
    sChaineHexa est une chaîne  

    nPosition est un entier          = 1


    TANTQUE nPosition<

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sChaineBinaire)
        nCodeASCII est un entier     =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sChaineBinaire[[nPosition À nPosition+7]],2)
        sCodeHexa est une chaîne    =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (nCodeASCII,2),2)
       
        sChaineHexa    += sCodeHexa
               
        nPosition+=8
    FIN

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sChaineHexa)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sChaineHexa)

     
     
    Gemini1961 apprécie ceci.
  12. saad27

    saad27 Active Member
    MEMBRE WX

    Inscrit:
    Mar 24, 2018
    Messages:
    154
    J'aime reçus:
    66

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Merci c'est toi le boss.. :):cool:

    Est-il possible d'éliminer l'utilisation du edit contrôle et d'utiliser une variable à la place?

    CHar1 is string = Charact(1)
    CHar2 is string = Charact(2)
    CHar3 is string = Charact(:relievedface:
    CHar4 is string = Charact(4)
    FS is string = Charact(28)


    sTexteBrut est une chaîne = "000000099opera "+CHar2+FS+"05 FO_FI_RES_QUERY"+FS+"820"+CHar3

    sTexteBinaire est une chaîne

    POUR i=1 _A_ Length(sTexteBrut)
    nEntier is int= Asc(sTexteBrut[])

    POUR j=16 _A_ 1 PAS -1


    sTexteBinaire += nEntier[j]


    EDT_Result+=nEntier[j]

    Checklen is string=Length(EDT_Result)

    IF Checklen =16 THEN


    EDT_Final+=CR+EDT_Result
    EDT_Result=""



    END



    FIN
    FIN


    nTotal est un entier
    sChaineBinaireFinal est une chaîne

    POUR TOUT CHAÎNE sBinaire DE EDT_Final SEPAREE PAR RC
    nTotal += Val(sBinaire[[9 A ]],2) // car 16 bit, sinon si 8 bit sBinaire seulement
    FIN

    POUR j=16 _A_ 1 PAS -1
    sChaineBinaireFinal += nTotal[j]
    FIN


    sChaineBinaire est une chaîne = sChaineBinaireFinal
    sChaineHexa est une chaîne

    nPosition est un entier = 1


    TANTQUE nPosition<Taille(sChaineBinaire)
    nCodeASCII est un entier = Val(sChaineBinaire[[nPosition A nPosition+7]],2)
    sCodeHexa est une chaîne = Droite(EntierVersHexa(nCodeASCII,2),2)

    sChaineHexa += sCodeHexa

    nPosition+=8
    FIN

    Info(sChaineHexa)
     

Partager cette page

Chargement...