http 中的gzip編碼與檔案gzip編碼一樣,一點修改也沒有,如果把資料複製下來再用gzip解碼完全能解壓出檔案來。
下面簡要分析下。
首先檢視gzip格式,發現其是 gzip頭+deflate編碼+尾
1.gzip頭一般使用1f8b08000000000000ff即可
2.deflate編碼
deflateinit2(&d_stream, z_default_compression, z_deflated, -15, max_mem_level, z_default_strategy);
這裡使用-15指定只使用原始deflate編碼,不新增zlib頭和尾。
然後再deflate就行了。
3.gzip尾部是4個位元組的crc校驗碼+4個位元組的原始資料長度。都取低4位。
crc函式在zlib開發包中有crc32
ok,現在就行了。編碼出來的檔案使用gzip能夠解碼,而且和http資料能對上
zlib 對http協議中的gzip解壓
gzip資料可以用zlib解壓,很多人用的是去掉gzip頭10個位元組再解壓,這個情況資料可以解壓出來,但是程式會報錯 strm msg char incorrect data check 檢視相關 可以看到這個是效驗檢查不對 check function to use adler32 for zl...
libcurl解壓gzip編碼
cocos2d x 2.1.3使用libcurl請求資料的時候若要指定返回資料編碼可以設定header如下 然後在接受資料的時候若需要libcurl自動解壓資料只需要在合適的地方加上 最後乙個引數就寫乙個空字串,這樣libcurl會根據返回資料解壓它所支援的所有編碼格式 curl easy seto...
http協議中編碼問題
http協議報文有兩種 請求報文和響應報文,這兩種報文結構是差不多的,都由三個部分組成,依次是 1 start line 開始行 在請求報文中叫請求行,響應報文中叫狀態行 如 get index.jsp http crlf 2 header 報頭 如 accept host user agent等 ...