Conversion Octet - Binaire

Demandé et répondu par R&B le 27-Sep-2004 12:14

Conversion Octet - Binaire

Arpès lecture d'un fichier en héxadécimal, voici la conversion des octets en binaire.

Bon dev.

nA,nB sont des entiers sans signe sur 1 octet
nA=64
nB=255
Info(Octet2Bin(nA),Octet2Bin(nB))

donne 01000000 et 11111111

avec

PROCEDURE Octet2Bin(sCar est un entier sans signe sur 1 octet)
// conversion de l'octet en hexa
sHexa est une chaîne fixe sur 2 = NumériqueVersChaine(sCar,'02X')
// conversion de l'octet (hexa) en binaire
sres est une chaîne fixe sur 8
i est un entier
BOUCLE
        i++
        SELON sHexa[[i]]
                CAS 0:
                        sres[[(4*(i-1))+1 A (4*i)]]='0000'
                CAS        1:
                        sres[[(4*(i-1))+1 A (4*i)]]='0001'
                CAS 2:
                        sres[[(4*(i-1))+1 A (4*i)]]='0010'
                CAS 3:
                        sres[[(4*(i-1))+1 A (4*i)]]='0011'
                CAS 4:
                        sres[[(4*(i-1))+1 A (4*i)]]='0100'
                CAS        5:
                        sres[[(4*(i-1))+1 A (4*i)]]='0101'
                CAS        6:
                        sres[[(4*(i-1))+1 A (4*i)]]='0110'
                CAS        7:
                        sres[[(4*(i-1))+1 A (4*i)]]='0111'
                CAS        8:
                        sres[[(4*(i-1))+1 A (4*i)]]='1000'
                CAS        9:
                        sres[[(4*(i-1))+1 A (4*i)]]='1001'
                CAS 'A':
                        sres[[(4*(i-1))+1 A (4*i)]]='1010'
                CAS 'B':
                        sres[[(4*(i-1))+1 A (4*i)]]='1011'
                CAS 'C':
                        sres[[(4*(i-1))+1 A (4*i)]]='1100'
                CAS 'D':
                        sres[[(4*(i-1))+1 A (4*i)]]='1101'
                CAS 'E':
                        sres[[(4*(i-1))+1 A (4*i)]]='1110'
                CAS 'F':
                        sres[[(4*(i-1))+1 A (4*i)]]='1111'
        FIN
        SI i=2 ALORS SORTIR
FIN
RENVOYER sres

Cette Q&R a été trouvée sur WDForge.org : http://old.wdforge.org/modules/smartfaq/faq.php?faqid=10