compress.go 683 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package mhayaCompress
  2. import (
  3. "bytes"
  4. "compress/zlib"
  5. "io"
  6. )
  7. func DeflateData(data []byte) ([]byte, error) {
  8. var bb bytes.Buffer
  9. z := zlib.NewWriter(&bb)
  10. _, err := z.Write(data)
  11. if err != nil {
  12. return nil, err
  13. }
  14. z.Close()
  15. return bb.Bytes(), nil
  16. }
  17. func InflateData(data []byte) ([]byte, error) {
  18. zr, err := zlib.NewReader(bytes.NewBuffer(data))
  19. if err != nil {
  20. return nil, err
  21. }
  22. zr.Close()
  23. return io.ReadAll(zr)
  24. }
  25. func IsCompressed(data []byte) bool {
  26. return len(data) > 2 &&
  27. (
  28. //zlib
  29. (data[0] == 0x78 &&
  30. (data[1] == 0x9C ||
  31. data[1] == 0x01 ||
  32. data[1] == 0xDA ||
  33. data[1] == 0x5E)) ||
  34. // gzip
  35. (data[0] == 0x1F && data[1] == 0x8B))
  36. }