|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.05.2017, 15:12 | #1 |
Новичок
Джуниор
Регистрация: 14.05.2017
Сообщений: 2
|
Сравнить 2 бинарных файла
В общем задача такая: открыть 2 бинарных файла и,если так можно вообще, циклом+ветвлением( ну или другим способом,если он есть) сравнить каждый 16-ичный коды и ,если они не равны, выводить в новый текстовый документ.
Ну к примеру ,открываю 2 файла в WinHex . В одном файле код F8 A1 F6 ,а в другом F5 A2 F6. Программка должна сравнить и как результат вывести F6. Пытаюсь создать саму программку и пробно вывести значения кода,но выводит какую-то билеберду: ----------------------------------- f = open(r"1.png", "rb") f.readline(2) print (f.readline(2)) ------------------------------ По идее ,если в файле 1.png 16-ичный код начинается ,допустим ,с F8, то моя программка должна вывести 2 символа,т.е как раз эти F8,но она выводит какой-то текст((( У меня есть код,который сравнивает все как надо,но проблема в том ,что ,если в середине 2 файлов есть различие,а дальше код одинаков,то эта программка выведет все,что идет после различия ( Т.Е выведет и совпадающий код). Вот она: ------------------------------------- file1 = r"d:\\22.jpg" file2 = r"d:\\11.jpg" with open(file1, 'br') as of1, open(file2, 'br') as of2: l1 = of1.read() l2 = of2.read() f1_f2 = set(enumerate(l1)) - set(enumerate(l2)) f2_f1 = set(enumerate(l2)) - set(enumerate(l1)) for offset, char in sorted(f1_f2, key=lambda x: x[0]): print("offset: {}\tchar: {:X}".format(offset, char)) print() for offset, char in sorted(f2_f1, key=lambda x: x[0]): print("offset: {}\tchar: {:X}".format(offset, char)) --------------------------------------- Мне же надо,чтобы в новый файл сохранялось ТОЛЬКО различие . ПОМОГИТЕ ПОЖАЛУЙСТА((( Последний раз редактировалось GeleosGeleoes; 14.05.2017 в 15:14. |
14.05.2017, 15:19 | #2 |
Новичок
Джуниор
Регистрация: 14.05.2017
Сообщений: 2
|
Еще можно открыть так:
--------------------- bytelist = bytearray() with open('01.mp3','rb') as bytes: for byte in bytes: bytelist.extend(byte) file=open('2.dat','wb') file.write(bytelist) file.close() -------------------------- Но опять же, во-первых,не сохраняется именно 16-ичный код (который проверяется в WinHex например) , а во-вторых,я не знаю,что сделать дальше |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сравнить на эквивалентность 2 двоичных файла | Progsenya | C# (си шарп) | 1 | 07.05.2011 11:49 |
Сравнить два файла | demiancz | Общие вопросы Delphi | 22 | 16.02.2011 15:29 |
Сравнить два текстовых файла | assch | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 17 | 29.09.2010 14:41 |
Сравнить 2 txt файла | maijor3 | Помощь студентам | 6 | 27.04.2010 00:36 |
Сравнить два файла | Aleksandr | Microsoft Office Excel | 6 | 07.10.2008 00:22 |