标签: zlib

Zlib内核模块

我正在尝试实现一个使用zlib的内核模块,那么有没有可用于linux-2.6.17.8的Zlib模块?

如果我需要将zlib的源文件转换为内核空间,我需要替换malloc,函数调用,断言等?

c kernel zlib kernel-module linux-kernel

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

如何使用C/C++使用zlib压缩目录或多文件?

我确实搜索了这个主题,但我没有找到任何相关的线索.

任何人都可以给我一些可以解决问题的技巧或演示代码吗?

提前致谢.

--- --- FYI

我想在这里做的是压缩文件并上传到远程PC.我认为它将采取以下步骤:

a)初始化压缩文件头并发送到远程PC并保存该压缩文件头.

b)打开文件以读取文件数据的一部分并在本地压缩文件数据.

c)通过管道(例如tcp或udp)将压缩数据发送到远程PC.

d)将数据从压缩管道保存在远程PC上.

e)如果有多个文件,请回到b)

e)当所有文件都被压缩并传输到远程PC时,然后关闭压缩文件.

这里有两个问题:

a)压缩/解压缩

b)文件格式

多谢你们!

c c++ zlib

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

如何使用zlib gzip NSData?

  1. 我想使用zlib,因为我认为它是gzip的最佳和最快的方式NSData.但是,有更好的方法吗?

  2. 如果没有,我应该在Xcode中链接哪个版本的zlib库:libz.dylib,libz.1.dylib,libz.1.1.3.dylib或libz.1.2.5.dylib?

  3. 请提供一个代码示例,说明如何将zlib转换NSData *normalHTTPBodyNSData gzippedHTTPBody

gzip zlib objective-c nsstring nsdata

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

关于在 ubuntu 上链接 zlib 中的错误

最近我需要在 Ubuntu 上使用 zlib 进行编程,这里我遇到了问题。我写了一个小程序来测试 zlib 函数,并在 Eclipse 中构建它。我发现它可以编译,但有一些像这样的链接错误:

main.cpp:27: undefined reference to `compress'
main.cpp:38: undefined reference to `uncompress'
Run Code Online (Sandbox Code Playgroud)

我该怎么办?如果这是因为没有库文件?

任何人都可以提供一些帮助吗?非常感谢!

MOODY_Y

另外,这是我的建筑信息:

11:59:08 **** Build of configuration Debug for project test_zlib ****
make all 
Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
Finished building: ../main.cpp

Building target: test_zlib
Invoking: GCC C++ Linker
g++  -o "test_zlib"  ./main.o   
./main.o: In function `main':
/home/hyq/workspace/test_zlib/Debug/../main.cpp:27: undefined reference to `compress'
/home/hyq/workspace/test_zlib/Debug/../main.cpp:38: undefined …
Run Code Online (Sandbox Code Playgroud)

c c++ ubuntu zlib

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

'zlib' 的 Uncompress() 返回 Z_DATA_ERROR

我做了一个简单的函数,它需要一个 gzipped 文件,并在某处提取。出于测试目的,我使用了一个通过通用实用程序gzip压缩的文本文件。但出于某种原因,Uncompress ()返回错误Z_DATA_ERROR

我走进调试器直到函数,它肯定会得到正确的数据(整个文件内容,它只有 37 个字节),所以它似乎是两个之一:可怕的 zlib-bug 现在正在窃取你的时间,或者我错过了一些重要的东西,然后我真的很抱歉。

#include <zlib.h>
#include <cstdio>

int UngzipFile(FILE* Dest, FILE* Source){
    #define IN_SIZE 256
    #define OUT_SIZE 2048
    bool EOFReached=false;
    Bytef in[IN_SIZE];
    Bytef out[OUT_SIZE];
    while(!EOFReached){//for no eof
        uLong In_ReadCnt = fread(in,1,IN_SIZE,Source);//read a bytes from a file to input buffer
        if(In_ReadCnt!=IN_SIZE){
            if(!feof(Source) ){
                perror("ERR");
                return 0;
            }
            else    EOFReached=true;
        }
        uLong OutReadCnt = OUT_SIZE;//upon exit 'uncompress' this will have actual uncompressed size
        int err = uncompress(out, &OutReadCnt, in, In_ReadCnt);//uncompress …
Run Code Online (Sandbox Code Playgroud)

c++ gzip zlib

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

如何在c/c++中使用gz lib时获得写入的压缩字节数?

我有一个问题zlib。如何知道写入的压缩字节数?我正在使用gzwrite(...). 正如我们所知,它返回写入的未压缩(实际)字节数。

我应该使用其他 API 而不是gzwrite()

我在做什么, - 我有一个 .gz 输出文件。当我有一些可用的内容时,我会不断写入文件。我还想跟踪文件,使其不会超过特定大小。我不想使用stat() linux API因为我的写作非常频繁。

建议?

compression zlib

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

C zlib crc32 和 Python zlib crc32 不匹配

我在 Python 和 C 中对 crc32 进行了一些试验,但我的结果不匹配。

C:
#include <stdio.h>
#include <stdlib.h>
#include <zlib.h>

#define NUM_BYTES 9

int
main(void)
{

  uint8_t bytes[NUM_BYTES] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

  uint32_t crc = crc32(0L, Z_NULL, 0);

  for (int i = 0; i < NUM_BYTES; ++i) {
    crc = crc32(crc, bytes, 1);
  }

  printf("CRC32 value is: %" PRIu32 "\n", crc);
}
Run Code Online (Sandbox Code Playgroud)

给出输出 CRC32 value is: 3136421207

Python

In [1]: import zlib
In [2]: int(zlib.crc32("123456789") + 2**32)
Out[2]: 3421780262
Run Code Online (Sandbox Code Playgroud)

在 …

c python crc32 zlib

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

Python:解压android备份?

我想使用 python 解压 Android 备份文件。

根据http://nelenkov.blogspot.com/2012/06/unpacking-android-backups.html可以使用解压缩未加密的 adb 文件

dd if=mybackup.ab bs=24 skip=1|openssl zlib -d > mybackup.tar
Run Code Online (Sandbox Code Playgroud)

tar xvf mybackup.tar
Run Code Online (Sandbox Code Playgroud)

这些可以在python中完成吗?Python 有zlib,gziptarfile,它们似乎应该可用。无论如何,如果他们可以做到,该怎么做?

tarfile.open('filename.tar', 'r:')第二步工作?

我在窗户上,顺便说一句。

python backup android zlib tar

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

Golang:"compress/flate"模块无法解压缩有效的deflate压缩HTTP正文

这个问题继续在这里开始讨论.我发现由于deflate后者的压缩,无法将HTTP响应主体解组为JSON对象.现在我想知道如何使用Golang进行解压缩.我将非常感谢能够在我的代码中显示错误的任何人.

输入数据

我已将HTTP响应主体转储到' test '文件中.就这个:

$ cat test
x??PAN?0?
;??NtJ?F?dU?|"oVR?C%?f?????Z.?^Hs?dW??'??DH?S?SFVC????r)G,?????<???z}?x_g?+?2??sl?r/?Oy>??J3\?G?9???N???#[5M?^v/?2???|?h??[?~7?_?<D*???/??i
Run Code Online (Sandbox Code Playgroud)

让我们确保这个文件可以解压缩,甚至包含有效的JSON:

$ zlib-flate -uncompress < test
{"timestamp":{"tv_sec":1428488670,"tv_usec":197041},"string_timestamp":"2015-04-08 10:24:30.197041","monitor_status":"enabled","commands":{"REVERSE_LOOKUP":{"cache":{"outside":{"successes":0,"failures":0,"size":0,"time":0},"internal":{"successes":0,"failures":0,"size":0,"time":0}},"disk":{"outside":{"successes":0,"failures":0,"size":0,"time":0},"internal":{"successes":13366,"failures":0,"size":0,"time":501808}},"total":{"storage":{"successes":0,"failures":0},"proxy":{"successes":13366,"failures":0}}},"clients":{}}}
$ zlib-flate -uncompress < test | python -m json.tool
{
    "commands": {
        "REVERSE_LOOKUP": {
            "cache": {
               ....
Run Code Online (Sandbox Code Playgroud)

源代码

package main

import (
    "bytes"
    "compress/flate"
    "fmt"
    "io/ioutil"
)

func main() {
    fname := "./test"
    content, err := ioutil.ReadFile(fname)
    if err != nil {
        panic(err)
    }
    fmt.Println("File content:\n", content)

    enflated, err := ioutil.ReadAll(flate.NewReader(bytes.NewReader(content)))
    if err != nil {
        panic(err)
    } …
Run Code Online (Sandbox Code Playgroud)

zlib deflate go

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

zLib透明写模式"wT"性能下降

我希望zLib透明模式(gzptintf())和常规fprintf()一样快.我发现带有"wT"的zLib gzprintf()比fprintf()慢2.5倍.有关此性能问题的解决方法吗?

细节:

我在Linux上使用libz.so.1.2.8(fedora 22,内核4.0.5,Intel(R)Core(TM)i7-3770 CPU @ 3.40GHz)为我的事件跟踪收集器提供输出文件压缩选项.为了保持传统兼容性,我需要透明文件格式写入模式.

正如我所见,gzopen中的选项"T"允许写入没有压缩的文件而没有gzip头记录.

问题在于性能.透明模式比简单标准fprintf慢约2.5倍.

这是快速测试结果(值在TSC中):

    zLib]$ ./zlib_transparent
Performance fprintf vs gzprintf (transparent):
     fprintf 22883026324
zLib transp  62305122876
ratio 2.72277
Run Code Online (Sandbox Code Playgroud)

此测试的来源:

#include <stdio.h>
#include <zlib.h>
#include <iostream>
#include <sstream>
#include <iomanip>

#define NUMITERATIONS 10000000
static double buffer[NUMITERATIONS];

static __inline__ unsigned long long rdtsc(void){
    unsigned hi, lo;
    __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
    return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
}

long long test_fprintf(double *buffer){
    long long t = rdtsc();
#ifdef USE_FPRINTF
    double tmp …
Run Code Online (Sandbox Code Playgroud)

linux io performance zlib

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