Các zlib docs xác định rằng người ta có thể vượt qua một windowBits
luận tiêu cực đến deflateInit2()
chức năng:Có thể lấy một số liệu thô ra khỏi java.util.zip.Deflater không?
windowBits
cũng có thể là -8 ..- 15 cho nguyên deflate. Trong trường hợp này,-windowBits
xác định kích thước cửa sổ.deflate()
sau đó sẽ tạo ra dữ liệudeflate
thô không có zlib tiêu đề hoặc đoạn giới thiệu và sẽ không tính giá trị kiểm tra adler32.
Tôi đã sử dụng điều này trong mã C của tôi, và trong Java là có thể thổi phồng byte do đó nén bằng cách đi qua true
cho nowrap
tham số để các nhà xây dựng Inflater.
Tuy nhiên, vượt qua true
cho tham số nowrap
tới Deflater không mang lại giảm phát thô. Nó trả về 20 byte nhiều hơn tôi nhận được với việc thực hiện C của tôi, mà chắc chắn âm thanh như một tiêu đề và kiểm tra. (Đi qua false
cho nowrap
mang lại một mảng byte thậm chí lâu hơn.)
Tôi đã quét qua Deflater docs nhưng chưa tìm ra cách để xác định bit cửa sổ hoặc mà tôi muốn có một deflate thô. Có thể với thư viện này không? Hoặc tôi sẽ cần phải sử dụng một số thực hiện khác để có được một deflate thô trong Java?
AFAIK, chuyển giá trị đúng cho tham số không có bọc là cách duy nhất để sử dụng giảm phát thô. –
Tôi * nghĩ rằng * chuyển 'true' thành tham số' nowrap' mang lại kết quả [RFC-1950] (https://www.ietf.org/rfc/rfc1950.txt) ZLIB. Việc truyền 'false' cho kết quả Gzip-1952] (https://www.ietf.org/rfc/rfc1952.txt) Gzip. Những gì tôi muốn là một [RFC-1951] (https://www.ietf.org/rfc/rfc1951.txt) kết quả DEFLATE thô. – theory
bạn đã xem xét các khả năng 'DeflaterOutputStream' và' DeflaterInputStream' chưa? Có lẽ điều đó sẽ giúp bạn. –