如何在二进制无符号字符上使用 zpipe inflate
how to use zpipe inflate on a binary unsigned char
我有一个压缩和 base64 编码的字符串,我想解压缩 zpipe。
我完成了教程 here,效果很好。我先b64解码字符串,保存到文件中,然后用inf()
函数解压
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() 函数更改为硬编码文件:
int inf()
{
FILE *source;
FILE *dest;
source = fopen("/path/to/my/b64decoded_file/", "r");
dest = fopen("/path/to/my/decompressed_file/", "w");
现在我想更改 inf()
函数,使其在二进制文件作为参数传递时起作用。
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"
中。从不伤害。可以提供帮助。)
我有一个压缩和 base64 编码的字符串,我想解压缩 zpipe。
我完成了教程 here,效果很好。我先b64解码字符串,保存到文件中,然后用inf()
函数解压
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() 函数更改为硬编码文件:
int inf()
{
FILE *source;
FILE *dest;
source = fopen("/path/to/my/b64decoded_file/", "r");
dest = fopen("/path/to/my/decompressed_file/", "w");
现在我想更改 inf()
函数,使其在二进制文件作为参数传递时起作用。
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"
中。从不伤害。可以提供帮助。)