Предположим, что у меня есть файл в качестве входных данных, что составляет 4 байта, и я хотел бы вывод:Биты и файлы в Python
bit + first two bytes + bit + last two bytes
Где добавленные биты только флаги. Как я могу это сделать в python (используя только встроенные функции), так что новый файл имеет всего 5 байтов (2 бит + 4 байта ~ = 5 байтов).
Я знаком с file.read(x)
и другими операциями ввода-вывода, но часть, о которой я не уверен, заключается в том, как добавить биты.
Редактировать: Я смог решить эту проблему, используя библиотеку python bitarray
. Этот модуль имеет поддержку, чтобы сделать все, что я хотел:
- Чтение байтов из файла в битовый массив, используя
fromfile()
- добавить биты с помощью
append(True/False)
- присоединяя переменную с определенного размера с помощью
frombytes()
и стандарт pythonstruct
модуль. - Запись битов массива в файл (с прокладкой, если это необходимо) с помощью
tofile()
Вы также можете использовать python-bitstring
модуль, чтобы получить аналогичные результаты.
ли формат вывода уже предопределены (требование проекта), чтобы быть точно так же как это? Если это не так, я буду писать биты (флаги) полностью отдельно от части данных. –
Да, мне нужно, чтобы перед данными были флаги. – Sam
Я добавил свое решение в редактирование. пожалуйста, голосуйте заново. – Sam