Задача: есть несколько бинарных файлов. Нужно получить новые файлы, которые получаются из исходных путем инвертирования каждого бита.

Получилось следующее решение на Python:

import os

def process(fnIn, fnOut):
    f = open(fnIn, 'rb')
    fo = open(fnOut, 'wb')
    try:
        CHUNKSIZE = 1024
        bytes_read = f.read(CHUNKSIZE)
        while bytes_read:
            for b in bytes_read:
                b = ~ord(b)
                """ Здесь небольшой изврат, тк не нашел, 
                как можно записать байт в файл, 
                а chr принимает только положительные значения,
                в то время как в результате инверта может получится
                отрицательное"""
                if (b < 0) :
                    b = 256 + b
                fo.write(chr(b))
            bytes_read = f.read(CHUNKSIZE)
    finally:
        f.close()
        fo.close()

names = os.listdir('e')
for name in names:
    process('e/'+name, 'eo/'+name)
blog comments powered by Disqus

Реклама и кнопки:

CMS Made Simple 1.9.2 CMS Made Simple - Сайт русской поддержки

Proud to useProud to use