Мне нужна кросс-платформенная компрессия/декомпрессия между Windows и Ubuntu. Насколько я понимаю, начиная с .NET 4.5, класс DeflateStream использует zlib в качестве библиотек сжатия. Я написал две небольшие тестовые программы для сжатия данных: одну в C#, запущенную в Windows, а другую в «C», запущенную на Ubuntu. Платформа .NET - 4.5.2..NET DeflateStream vs linux zlib разница
C# код использует CompressionLevel.Optimal
код С помощью Z_BEST_COMPRESSION
Вот результаты:
Input bytes: {9, 12, 13}
C# output: {227, 228, 225, 5, 0};
C output: {120, 218, 227, 228, 225, 5, 0, 0, 67, 0, 35}
Как вы можете видеть, длина сжатых данных в C# является 5 байты, где в C - 11 байтов. Кажется, что 'C' zlib добавляет 2 дополнительных байта в заголовке и 4 дополнительных байта в нижнем колонтитуле.
При необходимости я могу предоставить общий доступ к коду. Тем не менее, это взято из стандартных примеров, которые вы видите в сети, и нет ничего особенного в коде.
Я что-то не хватает? Есть ли способ исправить это? Если заголовок и нижний колонтитул всегда остаются неизменными, возможно, я всегда могу добавить дополнительные байты. С уважением.