예제 #1
0
def compressBW(bw_file, size):
    """
    Compresse la BW dans un fichier binaire
    """
    global bwinv
    global bw
    global pos

    count = 0
    bourre = 0

    n_bytes_pos = bytes_needed(pos)
    bytes_pos = (pos).to_bytes(n_bytes_pos, byteorder="big")
    bw_file.write(bytes([n_bytes_pos]))
    bw_file.write(bytes_pos)  # on écrit la position du $

    while count < size:
        try:  # on prend 4 caractères par 4 et on l'écrit sous forme de byte
            to_bytes = BitArray()
            l = bw[count:count + 4]
            to_bytes = to_bytes.join(l)
            bw_file.write(to_bytes.bytes)
            count += 4
        except:  # on bourre avec des 00 les derniers caractères
            to_bytes = BitArray()
            l = bw[count::]
            n = len(l)
            bourre = len(l)
            while n < 4:
                l.append(BitArray('0b00'))
                n += 1
            to_bytes = to_bytes.join(l)
            bw_file.write(to_bytes.bytes)
            count += 4
    bw_file.write(bytes([bourre]))