zlib-flate算法是否与Java的Inflate / Deflate算法相同?

时间:2018-12-24 01:31:37

标签: java scala zlib

我假设是这样(如@ 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看起来有所不同,但是没有什么区别)我们正在寻找。)

谢谢

0 个答案:

没有答案