繁体   English   中英

如何在二进制无符号字符上使用 zpipe inflate

[英]how to use zpipe inflate on a binary unsigned char

我有一个压缩和 base64 编码的字符串,我想解压缩 zpipe。

我在这里做了教程,效果很好。 我 b64 首先解码字符串,将其保存到文件中,然后使用inf() function 对其进行解压缩。

int ret;
char *b64_string = (char *)read_b64_string();
size_t my_string_len;
unsigned char *my_string = b64_decode_ex(my_string, strlen(my_string), &my_string_len);
free(b64_string);

write_decoded_b64_to_file(my_string, my_string_len);
free(my_string);

ret = inf();

然后我将 inf() function 更改为硬编码文件:

int inf()
{
    FILE *source;
    FILE *dest;
    source = fopen("/path/to/my/b64decoded_file/", "r");
    dest = fopen("/path/to/my/decompressed_file/", "w");

现在我想更改inf() function 以使其在二进制文件作为参数传递时工作。

int ret;
size_t my_string_len;
unsigned char *my_string = b64_decode_ex(my_string, strlen(my_string), &my_string_len);
ret = inf(my_string);

我想我确定了这条线

strm.avail_in = fread(in, 1, CHUNK, source);

作为我必须读取二进制文件的地方。 fread仅适用于文件。 如何在没有文件的情况下读取这个二进制文件?

只需使用fmemopen()my_string作为文件打开。

source = fmemopen(my_string, my_string_len, "rb");

(我习惯性地将b放在"rb"中。从不伤害。可以提供帮助。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM