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]))