Solution de l'étape 2

Ajoutez le code suivant au fichier qr.py

def bit(n, i):
    return (n >> i) & 1

def couleur_module(b):
    if b == 1:
        return NOIR
    return BLANC

def placer_modules_format(img, format_encode):
    for i in range(6):
        placer_module(img, 8, i, couleur_module(bit(format_encode, i)))
    placer_module(img, 8, 7, couleur_module(bit(format_encode, 6)))
    placer_module(img, 8, 8, couleur_module(bit(format_encode, 7)))
    placer_module(img, 7, 8, couleur_module(bit(format_encode, 8)))
    for i in range(6):
        couleur = couleur_module(bit(format_encode, 9 + i))
        placer_module(img, 5 - i, 8, couleur)

    for i in range(8):
        placer_module(img, 20 - i, 8, couleur_module(bit(format_encode, i)))
    for i in range(7):
        placer_module(img, 8, 14 + i, couleur_module(bit(format_encode, 8 + i)))

Ajouter le code suivant au fichier galois.py

def modulo(dividende, diviseur):
    degre_diviseur = degre(diviseur)
    degre_dividende = degre(dividende)
    while degre_dividende >= degre_diviseur:
        dividende = dividende ^ (diviseur << (degre_dividende - degre_diviseur))
        degre_dividende = degre(dividende)
    return dividende

Ajouter le code suivant au fichier encodeur.py

import galois

def encode_format(mode, masque):
    donnees = ((mode << 3) ^ masque) << 10
    extra = galois.modulo(donnees, 0b10100110111)
    return (donnees + extra) ^ 0b101010000010010