Я предположил так (как указано @ https://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html),, но некоторые элементарные тесты, кажется, показывают мне иначе:
def compress(data: Array[Byte]): Array[Byte] = {
val dis = new DeflaterInputStream(new ByteArrayInputStream(data))
val baos = new ByteArrayOutputStream()
dis.transferTo(baos)
val result = baos.toByteArray
dis.close()
baos.close()
result
}
Files.write(Paths.get("/tmp/xxx"), compress("a".getBytes("utf-8")))
и результат:
usr@usr:/tmp$ xxd xxx
00000000: 789c 4b04 0000 6200 62 x.K...b.b
, новыполнение в bash следующее дает другой результат:
usr@usr:/tmp$ echo a| zlib-flate -compress | xxd
00000000: 789c 4be4 0200 00ce 006c x.K......l
Любая подсказка, почему результаты отличаются? Это то, что алгоритмы просто не совпадают? Я пытался просто ради этого использоватьразличные кодировки, кроме utf-8 (ascii и utf-16 и, как и ожидалось, ascii или utf-8 выглядели одинаково для данного ввода, и utf-16 казался другим, но не тем, что мы ищем.)
Спасибо