bundle的下载和使用

1.bundle 的概要

BundleBundle 是一个嵌入式压缩库(嵌入是指直接嵌入到代码中,可以直接使用无需编译),支持 23 种压缩算法和 2 种存档格式。

2.bundle 的使用

使用的时候只需要手动拷贝添加两个 bundle.hbundle.cpp 文件即可,简单易用,这也是为什么我推荐这个库的原因之一。您直接前往对应的 git 仓库(https://github.com/r-lyeh-archived/bundle)进行下载即可。我们来尝试使用一下代码,再来进行总结。

//pack.cpp
#include <iostream>
#include <string>
#include <fstream>
#include "bundle.h"int main(int argc, char const *argv[])
{//1.获取文件名字if (argc < 3) return -1;std::cout << "原始文件路径" << argv[1];std::cout << "压缩文件路径" << argv[2];std::string iFileName = argv[1];std::string oFileName = argv[2];//2.获取原始文件的大小std::ifstream ifs;ifs.open(iFileName, std::ios::binary);ifs.seekg(0, std::ios::end); //偏移量 off, 基准 way, 这里就将文件读取位置移动到文件的末尾size_t fsize = ifs.tellg(); //获取到文件大小ifs.seekg(0, std::ios::beg);//3.读取文件内容到文件流中std::string body;body.resize(fsize); //调整为打开文件的大小ifs.read(&body[0], fsize); //读取文件的内容ifs.close();//4.将原始文件转化为压缩文件std::string packed = bundle::pack(bundle::LZIP, body); //选择 LZIP 格式对文件内容进行压缩std::ofstream ofs;ofs.open(oFileName, std::ios::binary);ofs.write(&packed[0], packed.size()); //保存压缩后的内容ofs.close();//5.回显压缩信息std::cout<< "压缩成功" << std::endl<< "压缩前:" << fsize << " "<< "压缩后:" << packed.size()<< std::endl;return 0;
}
//unpack.hpp
#include <iostream>
#include <string>
#include <fstream>
#include "bundle.h"int main(int argc, char const *argv[])
{//1.获取文件名字if (argc < 3) return -1;std::cout << "原始文件路径" << argv[1];std::cout << "解缩文件路径" << argv[2];std::string iFileName = argv[1];std::string oFileName = argv[2];//2.获取原始文件的大小std::ifstream ifs;ifs.open(iFileName, std::ios::binary);ifs.seekg(0, std::ios::end); //偏移量 off, 基准 way, 这里就将文件读取位置移动到文件的末尾size_t fsize = ifs.tellg(); //获取到文件大小ifs.seekg(0, std::ios::beg);//3.读取文件内容到文件流中std::string body;body.resize(fsize); //调整为打开文件的大小ifs.read(&body[0], fsize); //读取文件的内容ifs.close();//4.将原始文件转化为解缩文件std::string unpacked = bundle::unpack(body); //直接进行解缩std::ofstream ofs;ofs.open(oFileName, std::ios::binary);ofs.write(&unpacked[0], unpacked.size()); //保存压缩后的内容ofs.close();//5.回显压缩信息std::cout<< "解压成功" << std::endl<< "解压前:" << fsize << " "<< "解压后:" << unpacked.size()<< std::endl;return 0;
}

我们可以通过 md5sum "文件名" 计算 md5 值来检查文件解压前和解压后内容是否相同(内容相同则 md5 值相同)

因此实际上这个库使用起来非常简单,单纯选择压缩方式然后使用 bundle::pack() 压缩即可,解压无需选择解压方式,直接调用 bundle::unpack()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三维图形程序员必学-CGAL几何算法

GCAL几何算法库,涵盖了很多数学几何算法,矩阵运算、平面拟合、曲线拟合、曲面重建、网格优化、网格剖分、面线相交、布尔运算等等各种图形学几何相关的算法。 文章最后放了一个CGAL求点集拟合平面,投影求线的例子代码。 CGAL是一个开源代码库,官网连接GitHub - CGAL/cgal…

网络安全之弱口令与命令爆破(上篇)(技术进阶)

目录 一&#xff0c;什么是弱口令&#xff1f; 二&#xff0c;为什么会产生弱口令呢&#xff1f; 三&#xff0c;字典的生成 四&#xff0c;使用Burpsuite工具弱口令爆破 总结 一&#xff0c;什么是弱口令&#xff1f; 弱口令就是容易被人们所能猜到的密码呗&#xff0c;…

Linux动态追踪——eBPF

目录 摘要 1 什么是 eBPF 2 eBPF 支持的功能 3 BCC 4 编写脚本 5 总结 6 附 摘要 ftrace 和 perf 与 ebpf 同为 linux 内核提供的动态追踪工具&#xff0c;其中 ftrace 侧重于事件跟踪和内核行为的实时分析&#xff0c;perf 更侧重于性能分析和事件统计&#xff0c;与…

脚本:监控Oracle中正在运行的SQL

这是我自己平时用的一个监控Oracle中正在运行的SQL的脚本&#xff0c;有需要的请收藏&#xff0c;运行时直接复制和粘贴即可。 col inst_sid heading "INST_ID|:SID" format a7 col username format a10 col machine format a12 col sql_exec_start heading "…

vim+xxd 编辑16进制

1. vim -b mib 2. 在vim 中执行 %!xxd, 这样就可以输入16进制&#xff1a; 3. 输入完成后&#xff0c;在vim中 执行 %!xxd -r 切换至原模式&#xff1b; 4. 保存退出即可 5. 重新打开mib文件&#xff1a;vim -b mib 6. 在vim 中执行 %!xxd, 查看是否符合预期&#xff1a;…

c++实战篇(二)——基于自旋锁实现的日志服务模块

前言 日志模块一直是服务端开发比较重要的部分,而在实际应用中向日志中进行写入的操作往往不是单线/进程的&#xff0c;而在多进/线程中如何实现对共享资源的保护&#xff0c;就成了一个比较重要的问题,而在实际开发中我们常常会利用锁机制来实现对共享内存的保护&#xff0c;…

学习java第五十一天

解释不同方式的自动装配 。 有五种自动装配的方式&#xff0c;可以用来指导 Spring 容器用自动装配方式来进行依赖注入。 no&#xff1a;默认的方式是不进行自动装配&#xff0c;通过显式设置 ref 属性来进行装配。 byName&#xff1a;通过参数名 自动装配&#xff0c;Spring 容…

如何理解GDP、国民总收入(GNI)的区别和联系

国内生产总值和国民总收入是衡量一个国家&#xff08;地区&#xff09;经济状况和发展水平的两个重要总量指标。两者既有密切的联系&#xff0c;又有一定区别&#xff0c;用途都非常广泛。 一、GDP与GNI的基本概念 国内生产总值(Gross Domestic Product&#xff0c;GDP)&…

遇到PHP方法 二维数组随机排序shuffle 二维数组筛选搜索array_filter

在做二维数组随机排序的时候&#xff0c;发现shuffle 函数挺好用&#xff0c;就不用在做负载的数组随机排序了&#xff0c;对于二维数组同样可以随机排列 php中的shuffle()函数是一个非常有用的函数&#xff0c;常用于随机重排数组中的元素。这个函数可以在很多开发场景中&…

一个联合均值与方差模型的R包——dglm

目录 一、引言二、包的安装与载入三、模拟例子3.1 数据生成3.2 数据查看3.3 模型估计参数 一、引言 在 R 语言中&#xff0c;dglm 包是用于拟合双参数广义线性模型&#xff08;Double Generalized Linear Models&#xff0c;简称 DGLMs&#xff09;的一个工具。这类模型允许同…

模块三:二分——162.寻找峰值

文章目录 题目描述算法原理解法一&#xff1a;暴力查找解法二&#xff1a;二分查找 代码实现解法一&#xff1a;暴力查找解法二&#xff1a;CJava 题目描述 题目链接&#xff1a;162.寻找峰值 根据题意&#xff0c;需要使用O(log N)的时间复杂度来解决&#xff0c;得出本道题…

.rmallox勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言&#xff1a; 在当今数字化的时代&#xff0c;计算机病毒已成为网络安全的一大威胁。其中&#xff0c;.rmallox勒索病毒以其高度的隐蔽性、快速的传播速度、巨大的危害性和不断变种的特性&#xff0c;引起了广大用户的关注。本文将详细解析.rmallox勒索病毒的特点&#xf…

在美国站群服务器部署时如何保障从253个IP到1000个IP的无缝扩展?

在美国站群服务器部署时如何保障从253个IP到1000个IP的无缝扩展? 在当今企业的数字化转型中&#xff0c;服务器的部署和管理成为了保证业务连续性和拓展性的关键。尤其对于站群服务器来说&#xff0c;随着企业业务的增长和市场的扩展&#xff0c;需要从较小规模的253个IP地址…

AWTK 异形进度条控件发布

异形进度条控件。通过多边形来定义进度条的形状。 代码地址&#xff1a;https://gitee.com/zlgopen/awtk-widget-progress-polygon 特性 通过多边形定义进度条的形状支持通过图片来定义进度条的背景支持通过图片来定义进度条的前景 使用图片填充比使用颜色填充消耗更多的内…

Debezium分享系列之:Debezium2.6稳定版本设置SQL Server数据库

Debezium分享系列之:Debezium2.6稳定版本设置SQL Server数据库 一、在 SQL Server 数据库上启用 CDC二、在 SQL Server 表上启用 CDC三、验证用户是否有权访问 CDC 表四、SQL Server Always On五、SQL Server 捕获作业代理配置对服务器负载和延迟的影响六、SQL Server 捕获作业…

速盾:常见的DDOS攻击类型有哪些?

DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种通过使目标系统超负荷而使其无法正常工作的网络攻击手段。在这种攻击中&#xff0c;恶意攻击者使用多个主机或设备&#xff08;也被称为僵尸网络或机器人网络&#xff09;来同时向目标系统发送大量的网络流量&#xff0c;…

数据结构练习-线性表定义与基本操作

----------------------------------------------------------------------------------------------------------------------------- 1. 线性表是( )。 A.一个有限序列&#xff0c;可以为空 B. 一个有限序列&#xff0c;不可以为空 C. 一个无限序列&#xff0c;可以为空…

第三次国土调查数据库字母缩写代表含义

CCWJQ拆除未尽区&#xff0c;CJDCQ村界调查区&#xff0c;CJDCQJX村界调查区界线&#xff0c;CLKZD测量控制点&#xff0c;CSKFBJ城市开发边界&#xff0c;CZCDYD城镇村等用地&#xff0c;DGX等高线&#xff0c;DLTB地类图斑&#xff0c;DZGY地质公园&#xff0c;FJMSQ风景名胜…

【一般排查思路】针对银河麒麟高级服务器操作系统磁盘空间已满

1. 本身磁盘空间已满 有时候我们会看到服务器上有提示“设备上没有空间”&#xff0c;如图1。 图 1 如果是磁盘本身空间已满&#xff0c;我们可以借助du工具来排查&#xff0c;比如首先cd / 切换到根目录&#xff0c;然后 du -sh * | sort -rh | head -n 3查看空间占用最大的…

【Unity】苹果(IOS)开发证书保姆级申请教程

前言 我们在使用xcode出包的时候&#xff0c;需要用到iOS证书(.p12)和描述文件(.mobileprovision) 开发证书及对应的描述文件用于开发阶段使用&#xff0c;可以直接将 App 安装到手机上&#xff0c;一个描述文件最多绑定100台测试设备 1.证书管理 进入网站Apple Developer &…