Использование кодировки base64 в качестве механизма обнаружения изменений - PullRequest
2 голосов
/ 16 марта 2010

Можно ли обнаружить изменения в кодировке base64 объекта, чтобы определить степень изменений в объекте.

Предположим, я отправляю вложение документа нескольким пользователям, и каждый вносит в него изменения и отправляет мне по электронной почте письмо. Могу ли я использовать строковое расстояние между исходным base64 и полученным base64, чтобы определить, какая версия содержит больше всего изменений. Это будет действительный показатель?

Если нет, будут ли другие метрики для количественного определения дельт?

Ответы [ 4 ]

4 голосов
/ 16 марта 2010

Это будет полностью зависеть от типа документа, который вы закодировали. Если это был текстовый файл, то, конечно же, разница в кодировке base64, вероятно, на уровне фактических изменений. Однако у вас может быть формат файла, в котором изменения в содержимом фактически приводят к совершенно другому двоичному файлу. Примером этого может быть ZIP-файл.

0 голосов
/ 16 марта 2010

Base64 упаковывает группы значений 3x8 бит в 4x6. Если вы измените одно 8-битное значение на один бит, то вы окажете влияние только на одно из 6-битных значений. Если вы измените на два бита, то у вас будет примерно 5/12 шанс попасть в одно из других 6-битных значений. Так что, если вы считаете биты, это полностью эквивалентно; в противном случае вы будете вносить шум в зависимости от используемой вами метрики.

0 голосов
/ 16 марта 2010

Теоретически, да, если сделать умный анализ (обнаружение вставок, удалений и модификаций).

На практике нет, если только документы не являются абсолютно простым текстом. Двоичные форматы не могут быть существенно различны.

0 голосов
/ 16 марта 2010

вы должны сделать то же, что и diff . Затем, например, сделайте метрику по размеру поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...