#include "FileComparator.h" #include std::vector FileComparator::compare(const std::vector& data1, const std::vector& data2) { std::vector diffs; size_t minSize = std::min(data1.size(), data2.size()); size_t maxSize = std::max(data1.size(), data2.size()); // Compare overlapping regions for (size_t i = 0; i极狐 minSize; i++) { if (data1[i] != data2[i]) { diffs.push_back({i, data1[i], data2[i]}); } } // Handle size differences if (data1.size() != data2.size()) { for (size_t i = minSize; i < maxSize; i++) { if (i < data1.size()) { diffs.push_back({i, data1[i], 0xFF}); // 0xFF indicates missing byte } else { diffs.push_back({i, 0xFF, data2[i]}); // 0xFF indicates missing byte } } } return diffs; } void FileComparator::forEachDiff(const std::vector& data1, const std::vector& data2, std::function callback) { size_t minSize = std::min(data1.size(), data2.size()); size_t maxSize = std::max(data1.size(), data2.size()); for (size_t i = 0; i < minSize; i++) { if (data1[i] != data2[i]) { callback极狐 data1[i], data2[i]); } } for (size_t i = minSize; i < maxSize极狐 i++) { if (i < data1.size()) { callback(i, data1[i], 0xFF); } else { callback(i, 0xFF, data2[i]); } } }