标签: zlib

PHP中的gzinflate()?

我正在尝试几个小时来在C中实现PHP gzinflate()的行为.在PHP中它只是:gzinflate($ str); 在Python中它是:import zlib ... return zlib.decompress(decoding_data,-15)...但我只是无法在C中实现它.任何人都可以帮助我吗?我真的被困了..我试图用Zlib做一些事但它没有用..有人有点意见吗?

提前致谢,

尼莫

php c zlib

2
推荐指数
1
解决办法
1420
查看次数

从zlib.h解压缩 - 错误 - 未定义引用`uncompress_gzip'

我有代码,我有压缩数据,我需要解压缩它.我正在使用zlib这样做:

#include <zlib.h>
Run Code Online (Sandbox Code Playgroud)

在我的.cpp文件中.现在,当我编译它时,我得到错误:未定义的引用`uncompress_gzip'

是的,我需要链接一些lib?

谢谢,sg

c++ zlib

2
推荐指数
1
解决办法
6438
查看次数

使用stream_filter_append和stream_copy_to_stream解压缩gzip

发现这个:https: //stackoverflow.com/a/11373078/530599 - 很棒,但是

怎么样 stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_*

寻找另一种解压缩数据的方法.

$fp = fopen($src, 'rb');
$to = fopen($output, 'wb');

// some filtering here?
stream_copy_to_stream($fp, $to);
fclose($fp);
fclose($to);
Run Code Online (Sandbox Code Playgroud)

$src一些网址在哪里http://.../file.gz例如200+ Mb :)

添加了有效的测试代码,但分为两步:

<?php

    $src = 'http://is.auto.ru/catalog/catalog.xml.gz';
    $fp = fopen($src, 'rb');
    $to = fopen(dirname(__FILE__) . '/output.txt.gz', 'wb');
    stream_copy_to_stream($fp, $to);
    fclose($fp);
    fclose($to);

    copy('compress.zlib://' . dirname(__FILE__) . '/output.txt.gz', dirname(__FILE__) . '/output.txt');
Run Code Online (Sandbox Code Playgroud)

php zlib stream

2
推荐指数
1
解决办法
1795
查看次数

是否可以让zlib读取和写入相同的内存缓冲区?

我有一个字符缓冲区,我想压缩到位.现在我设置它所以有两个缓冲区和zlib的deflate从输入缓冲区读取并写入输出缓冲区.然后我必须将输入缓冲区指针更改为指向输出缓冲区并释放旧的输入缓冲区.这似乎是不必要的分配量.由于zlib正在压缩,next_out指针应始终滞后于next_in指针.无论如何,我找不到足够的文档来验证这一点,并希望有人对此有一些经验.谢谢你的时间!

buffer zlib in-memory

2
推荐指数
1
解决办法
1113
查看次数

ubuntu 12.04 install fontforge找不到包'zlib'

1,当我尝试./configure它说:

checking for ZLIB... configure: error: Package requirements (zlib) were not met:

No package 'zlib' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ZLIB_CFLAGS
and ZLIB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Run Code Online (Sandbox Code Playgroud)

2,我尝试安装zlib使用aptitude它说

packages contain "zlib" in their name:
  libio-compress-zlib-perl libcompress-raw-zlib-perl libcompress-zlib-perl 
  gambas2-gb-compress-zlib libghc6-zlib-dev libghc6-zlib-doc libzlib-ruby 
  zlibc zlib-bin libghc6-zlib-prof zlib-gst gambas2-gb-compress-bzlib2 
  haskell-zlib-doc libio-zlib-perl zlib1g-dbg zlib1g-dev 
  libghc6-zlib-prof-0.5.2.0-b96bd zlib1g …
Run Code Online (Sandbox Code Playgroud)

ubuntu install zlib fontforge

2
推荐指数
1
解决办法
1万
查看次数

将gzip压缩和base64编码的数据解码为可读格式

尝试在Python3.4中将gzip压缩和base64编码的数据解码为可读格式。

import base64
import zlib

original_data = '...jU2X0NCQ19TSEEAAAABAAA='     #Data cut short.

decoded64 = base64.b64decode(original_data)      #format:b'\x16xe\x94...\xae\x9a\...'
final_decoded = zlib.decompress(decoded64)
print(final_decoded)
Run Code Online (Sandbox Code Playgroud)

收到消息:“准备解压缩数据时出现错误-2:流状态不一致。” 不知道我在做什么错。

python gzip zlib python-3.x

2
推荐指数
1
解决办法
9656
查看次数

将mod_mysql,mod_xml和mod_zlib添加到apache

我正在进行Anahita安装 - 一个社交网络平台.根据其要求,有一条线说:

Apache 2.0+(使用mod_mysql,mod_xml,mod_zlib)或Nginx


你可以找到它的主要网站在这里和安装指南这里 我安装的Apache2(Ubuntu的14.04),但是当我去到/ etc/apache2的/ MODS的可用没有mod_mysql,mod_xml或mod_zlib.
我应该如何将这些模块添加到apache?
我在modules.apache.org找不到它们

xml mysql apache module zlib

2
推荐指数
1
解决办法
5841
查看次数

压缩压缩规范说明

我对这个问题的希望(参见底部)希望对我的放气过程进行尽可能多的布置,并且我可以(可能非常)误解了我所在的领域。希望最后,这个问题可以成为一个方便的资源。

Zlib标头

前两个字节等于zlib压缩的标头,格式为(credit

---CMF---  ---FLG---
0111.1000  1101.0101
CINF -CM-  +-||
           | |+- FCHECK
           | +-- FDICT
           +---- FLEVEL
Run Code Online (Sandbox Code Playgroud)

RFC 1950开始,从右到左:

  1. FCHECK(1.0101)-验证CMF和FLG为16位无符号整数是31的倍数

  2. FDICT(0)-如果设置,表示在FLG之后紧随其后的预设DICT

  3. FLEVEL(11)-压缩“强度” [0-3]

  4. CM(1000)-用于压缩方法,其中CM = 8 ==“放气”压缩方法

  5. CINF(0111)-指示使用的滑动窗口的大小,其中CINF = 7 == 32K滑动窗口

数据块头

NEW BYTE中的后三位等于霍夫曼编码块的标头:

---CMF---  ---FLG---  NEW BYTE
0111.1000  1101.0101  11101100
                           |-|
                           | +- BFINAL
                           +--- BTYPE
Run Code Online (Sandbox Code Playgroud)

RFC 1951右到左:

  1. BFINAL(0)-如果这是最后一个数据块,则设置为(1)

  2. BTYPE(10)-霍夫曼编码:(00)无;(01)修正霍夫曼码;(10)动态代码;(11)无效

霍夫曼密码

从这里开始,我将假设BTYPE =(10)

下列值会立即进行:

NEW BYTE                NXT BYTE                  
(11101)100       ->     101)(11101)   ->   0111111(1
       |-|
       | +- BFINAL
       +--- BTYPE
Run Code Online (Sandbox Code Playgroud)
  1. HLIT (11101)-5位长度/文字代码,增加了257个(257-286) …

c++ binary zlib deflate huffman-code

2
推荐指数
1
解决办法
479
查看次数

使用Python3.6解压缩gz压缩字符串

我想使用python3.6解压缩以下gz压缩字符串:

H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA==
Run Code Online (Sandbox Code Playgroud)

解压缩的字符串是" Hello World "

我能够使用在线工具解压缩它 - http://www.txtwizard.net/compression但我找不到在python中执行此操作的正确方法.

我尝试了zlib和gzip,但它们需要字节而不是str.我也尝试使用io.Bytes()进行转换,但没有用.我的代码是:

import gzip
import io 

class SearchEvents:

def decompressPayload():
    payload = "H4sIAAAAAAAA//NIzcnJVwjPL8pJAQBWsRdKCwAAAA=="
    payload_bytes = io.BytesIO(payload)
    print(gzip.decompress(payload_bytes))

SearchEvents.decompressPayload()
Run Code Online (Sandbox Code Playgroud)

我期待" Hello World "作为输出.但是我收到以下错误:

Traceback (most recent call last):
File "SearchEvents.py", line 13, in <module>
SearchEvents.decompressPayload()
File "SearchEvents.py", line 10, in decompressPayload
payload_bytes = io.BytesIO(payload)
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

有没有办法实现我想要的?

compression gzip zlib python-3.x

2
推荐指数
1
解决办法
2688
查看次数

Matlab中的GZIP用于大文件

我有一个函数解包一个Z使用zlib库打包的字节数组(从这里改编).

  • 打包数据大小为4.11 GB,解压缩数据为6.65GB.我有32GB的内存,所以这远远低于限制.
  • 我尝试将java堆大小增加到15.96GB,但这没有帮助.
  • MATLAB_JAVA环境变量指向jre1.8.0_144.

我得到了神秘的错误

'MATLAB array exceeds an internal Java limit.' 
Run Code Online (Sandbox Code Playgroud)

在第2 此代码的行:

import com.mathworks.mlwidgets.io.InterruptibleStreamCopier
a=java.io.ByteArrayInputStream(Z);
b=java.util.zip.GZIPInputStream(a);
isc = InterruptibleStreamCopier.getInterruptibleStreamCopier;
c = java.io.ByteArrayOutputStream;
isc.copyStream(b,c);
M=typecast(c.toByteArray,'uint8');
Run Code Online (Sandbox Code Playgroud)

试图实施Mark Adler的建议:

Z=reshape(Z,[],8);
import com.mathworks.mlwidgets.io.InterruptibleStreamCopier
a=java.io.ByteArrayInputStream(Z(:,1));
b=java.util.zip.GZIPInputStream(a);
for ct = 2:8,b.read(Z(:,ct));end
isc = InterruptibleStreamCopier.getInterruptibleStreamCopier;
c = java.io.ByteArrayOutputStream;
isc.copyStream(b,c);
Run Code Online (Sandbox Code Playgroud)

但在此isc.copystream我得到这个错误:

Java exception occurred:
java.io.EOFException: Unexpected end of ZLIB input stream

    at java.util.zip.InflaterInputStream.fill(Unknown Source)

    at java.util.zip.InflaterInputStream.read(Unknown Source)

    at java.util.zip.GZIPInputStream.read(Unknown Source)

    at java.io.FilterInputStream.read(Unknown Source)

    at com.mathworks.mlwidgets.io.InterruptibleStreamCopier.copyStream(InterruptibleStreamCopier.java:72)

    at com.mathworks.mlwidgets.io.InterruptibleStreamCopier.copyStream(InterruptibleStreamCopier.java:51)
Run Code Online (Sandbox Code Playgroud)

直接从文件 …

java matlab gzip zlib matlab-java

2
推荐指数
1
解决办法
450
查看次数