CppUtils/zlib_cpp/ZlibUtils.h

166 lines
5.4 KiB
C
Raw Permalink Normal View History

2025-06-05 10:06:43 +08:00
#pragma once
#include "ZlibCompressor.h"
#include "ZlibDecompressor.h"
#include <vector>
#include <string>
#include <fstream>
namespace ZlibCpp {
/**
* @brief zlib工具类便
*/
class ZlibUtils {
public:
/**
* @brief
* @param data
* @param level
* @param format
* @return
*/
static std::vector<uint8_t> Compress(const std::string& data,
CompressionLevel level = CompressionLevel::DefaultCompression,
DataFormat format = DataFormat::Zlib);
/**
* @brief
* @param data
* @param level
* @param format
* @return
*/
static std::vector<uint8_t> Compress(const std::vector<uint8_t>& data,
CompressionLevel level = CompressionLevel::DefaultCompression,
DataFormat format = DataFormat::Zlib);
/**
* @brief
* @param data
* @param format
* @return
*/
static std::string DecompressToString(const std::vector<uint8_t>& data,
DataFormat format = DataFormat::Zlib);
/**
* @brief
* @param data
* @param format
* @return
*/
static std::vector<uint8_t> Decompress(const std::vector<uint8_t>& data,
DataFormat format = DataFormat::Zlib);
/**
* @brief
* @param input_file
* @param output_file
* @param level
* @param format
* @return
*/
static bool CompressFile(const std::string& input_file,
const std::string& output_file,
CompressionLevel level = CompressionLevel::DefaultCompression,
DataFormat format = DataFormat::Zlib);
/**
* @brief
* @param input_file
* @param output_file
* @param format
* @return
*/
static bool DecompressFile(const std::string& input_file,
const std::string& output_file,
DataFormat format = DataFormat::Zlib);
/**
* @brief Adler32校验和
* @param data
* @return Adler32校验和
*/
static uint32_t CalculateAdler32(const std::vector<uint8_t>& data);
/**
* @brief CRC32校验和
* @param data
* @return CRC32校验和
*/
static uint32_t CalculateCRC32(const std::vector<uint8_t>& data);
/**
* @brief zlib版本信息
* @return
*/
static std::string GetVersion();
/**
* @brief
* @param data
* @return
*/
static DataFormat DetectFormat(const std::vector<uint8_t>& data);
/**
* @brief Gzip压缩器
* @param level
* @return Gzip压缩器实例
*/
static std::unique_ptr<ZlibCompressor> CreateGzipCompressor(
CompressionLevel level = CompressionLevel::DefaultCompression);
/**
* @brief Gzip解压缩器
* @return Gzip解压缩器实例
*/
static std::unique_ptr<ZlibDecompressor> CreateGzipDecompressor();
/**
* @brief Base64编码
* @param data
* @return Base64编码字符串
*/
static std::string Base64Encode(const std::vector<uint8_t>& data);
/**
* @brief Base64解码
* @param encoded Base64编码字符串
* @return
*/
static std::vector<uint8_t> Base64Decode(const std::string& encoded);
/**
* @brief
* @param data
* @return
*/
static std::string HexEncode(const std::vector<uint8_t>& data);
/**
* @brief
* @param hex
* @return
*/
static std::vector<uint8_t> HexDecode(const std::string& hex);
private:
// 工具类,禁用实例化
ZlibUtils() = delete;
~ZlibUtils() = delete;
ZlibUtils(const ZlibUtils&) = delete;
ZlibUtils& operator=(const ZlibUtils&) = delete;
/**
* @brief
*/
static std::vector<uint8_t> ReadFile(const std::string& filename);
/**
* @brief
*/
static bool WriteFile(const std::string& filename, const std::vector<uint8_t>& data);
};
} // namespace ZlibCpp