Скомпилированная на Python прошивка в битах обратно в скомпилированную прошивку

#python #byte #bit #compiled

Вопрос:

Мне нужно перенести скомпилированный код в необработанные биты, а затем обратно в скомпилированный код для проекта. Я перевел свой файл .uf2 в Python, и я получил его в виде байтов и в виде текста ANSI, но я не понял, как превратить его в биты. Я могу добавить этот вывод здесь, но он невероятно длинный, поэтому для удобства чтения я его опустил. По расширению я также не понял, как превратить его обратно в функционирующий файл .uf2. У кого-нибудь есть какие-нибудь идеи? Возможно ли вообще взять скомпилированный код и превратить его в биты, не разрушая его?

Редактировать: Вот мой код до сих пор. Мне нужно иметь доступ к битам, а не к байтам. Данные кодируются в ANSI.

 fpath= input("File path: ")  f = open(fpath,'rb') hexdec = f.read() print(hexdec) decode = hexdec.decode('ansi') print(decode)  

Комментарии:

1. Совершенно неясно, каков полный контекст. В чем разница между «необработанными битами» и «двоичными»? Двоичный файл, в конце концов, — это просто необработанные биты. Пожалуйста, покажите код, который у вас есть, и опишите в коде, что отсутствует/неверно.

2. Извините, это была опечатка

3. Когда вы говорите о том, чтобы превратить его в кусочки, что вы имеете в виду ? hexdec = f.read() уже является двоичными данными

4. Мне нужно прочитать код в виде отдельных битов (100110), вывод, как я понимаю, в байтах

5. Когда вы говорите, что читаете код в битах, вы имеете в виду печать 1 и 0 ?

Ответ №1:

Вы можете преобразовать шестнадцатеричную строку в массив байтов с помощью fromhex() метода bytearray

Тогда это простой вопрос обратной записи двоичного файла

 binary_data = bytearray.fromhex(hex_string) newfile = open(path, 'wb') newFile.write(binary_data) newFile.close()