Files, Binary & Compression

Сравнение бинарных файловНайдите точный offset, где два файла расходятся

Выберите файл A и файл B и запустите сравнение, чтобы увидеть каждый отличающийся участок байтов.

Сравнение бинарных файлов

Файлы

Файл A

Перетащите файл сюда или выберите его.

Файл B

Перетащите файл сюда или выберите его.

Файлы сравниваются только локально в браузере и не загружаются никуда.

Различия

Смените файл и сравните заново, чтобы обновить результат.

Выберите файл A и файл B, затем запустите сравнение.

Контрольная сумма скажет только, что два файла разные, но не покажет где: переупакованный ресурс, файл прошивки с патчем, две сборки одного бинарника. Для этого и нужно сравнение бинарных файлов: оба читаются локально, и каждый отличающийся участок байтов сообщается со своим offset и длиной, а не одним общим вердиктом «совпадает / не совпадает».

Это не текстовый diff. Если где-то вставлен или удалён байт, инструмент не пытается обнаружить это и заново выровнять всё, что дальше, — он сравнивает offset N файла A с offset N файла B, как это делают `cmp` и большинство hex-сравнений. На форматах без понятия строки именно такой подход даёт предсказуемый результат.

Зачем нужно это сравнение бинарных файлов

Ответ на уровне байтов, а не просто «да» или «нет».

У каждого отличия свой offset

Вместо единого вердикта список блоков показывает offset и длину каждого отличающегося участка. Клик по блоку сразу переносит hex-просмотр туда же, с несколькими байтами контекста по краям.

Два файла показаны рядом, выделен диапазон байт и указан его offset.

Разница в длине — отдельный блок

Если файл A и файл B разного размера, лишние байты в конце более длинного файла сообщаются отдельным блоком, а не смешиваются с последним изменённым участком.

Более короткий и более длинный файл, лишние байты в конце длинного файла отмечены отдельным блоком.

Как читать результат сравнения, не пропустив ни один блок

01

Загрузите файл A и файл B

Перетащите файл в любое из двух полей или используйте Выбрать файл. Поменять A / B мгновенно меняет их местами — без пересчёта, если результат уже есть, — а Загрузить пример подставляет небольшую пару файлов с изменённым участком и разницей в длине.

  • Каждый файл может быть до 512 МиБ; файлы больше отклоняются ещё до чтения.
02

Запустите сравнение

Сравнение не начинается автоматически сразу после выбора обоих файлов — нажмите Сравнить или Ctrl/Cmd+Enter, чтобы большая пара файлов не запускалась раньше времени. Смена любого файла помечает предыдущий результат как устаревший.

  • Более 20 000 отличающихся блоков приводят к явной ошибке вместо молчаливого обрезания списка — обычно это значит, что файлы на самом деле не связаны.
03

Просматривайте отличия по очереди

Только отличия показывает лишь список блоков; Просмотреть все байты позволяет листать весь файл постранично. Перейти к offset принимает как десятичное число, так и шестнадцатеричное значение с префиксом 0x.

  • Скопировать фрагмент и Скачать фрагмент экспортируют выбранный блок с небольшим контекстом вокруг него в виде текстового файла с hex и ASCII.

Что охватывает это сравнение

Побайтовое сравнение с фиксированным offset

Оба файла читаются одинаковыми блоками по 1 МиБ и сравниваются на одинаковых offset. Блок — это последовательность строго идущих подряд отличающихся байт, поэтому результат всегда одинаковый и воспроизводимый.

Список блоков, с которым можно работать

У каждого отличающегося участка есть offset, длина и тип; выбор блока переносит hex-просмотр туда же и позволяет экспортировать этот блок как фрагмент.

Отчёт по всему сравнению

Скопируйте или скачайте текстовый отчёт с размерами обоих файлов, общим числом отличающихся байт и блоков, а также offset и длиной каждого блока.

Два способа просмотра

Только отличия переключает между блоками различий; Просмотреть все байты листает весь файл постранично с выбранным числом байт в строке.

Что это сравнение делает, а что нет

Без выравнивания вставок и удалений
Инструмент сравнивает offset N файла A с offset N файла B; он не обнаруживает вставленный в одном файле байт, чтобы заново выровнять всё, что идёт дальше — так же, как `cmp` и vbindiff. Из-за одного вставленного байта всё последующее содержимое покажется отличающимся: это ожидаемое поведение строгого сравнения по offset, а не ошибка.
512 МиБ на файл, до 20 000 блоков за одно сравнение
Файлы больше 512 МиБ отклоняются ещё до чтения. Если пара файлов дала бы больше 20 000 отличающихся блоков, сравнение завершается явной ошибкой, а не обрезает список — обычно это значит, что файлы едва ли вообще сравнимы.
Это не hex-редактор и не определитель типа файла
Байты здесь доступны только для чтения, редактирования на месте нет. Определение формата файла по сигнатуре — задача другого инструмента; сравнение бинарных файлов лишь показывает, где два файла расходятся.
Сжатые или зашифрованные файлы почти всегда различаются целиком
Сжатие и шифрование обычно меняют почти все байты на выходе даже при минимальном изменении на входе, поэтому два сжатых файла часто выглядят как один огромный блок. Для осмысленного побайтового сравнения сравнивайте распакованную или расшифрованную версию.

Сравнение бинарных файлов: частые вопросы

Как сравнить 2 бинарных файла?

Выберите файл A и файл B на этой странице и нажмите Сравнить. Сравнение идёт побайтово прямо в браузере, а каждое отличие появляется в списке блоков со своим offset и длиной.

Какой программой можно сравнить файлы, не устанавливая ничего?

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

Чем сравнить 2 бинарных файла разного размера?

Здесь: сравнение идёт до конца более короткого файла, а лишние байты в конце более длинного отмечаются отдельным блоком «только в A» или «только в B», не смешиваясь с обычными отличиями.

Посоветуйте бесплатную утилиту сравнения бинарных файлов

Эта страница бесплатна и работает без регистрации: выберите два файла и нажмите Сравнить. Из настольных программ похожую функцию сравнения предлагают Beyond Compare, WinHex и FlexHex.

Как сравнивать бинарные файлы в Linux с помощью diff и cmp, и чем это отличается от этой страницы?

`cmp` сравнивает файлы побайтово по фиксированным offset — этот инструмент использует тот же подход. Текстовый `diff` вместо этого ищет вставленные и удалённые строки, что не подходит для произвольных бинарных данных без понятия строки.

Остался вопрос?

Сравните свои бинарные файлы прямо сейчас

Сначала загрузите пример, чтобы увидеть изменённый блок и разницу в длине рядом друг с другом, а затем сравните свои собственные файлы.

Всё выполняется локально в вашем браузере.