CRC32校验,zlib库-----c++

引入库

find_package(ZLIB REQUIRED)
target_link_libraries(${PROJECT_NAME} PUBLIC ZLIB::ZLIB)
#include <zlib.h>      // 引入zlib库进行CRC32校验

/// <summary>
/// crc32校验函数
/// </summary>
/// <param name="response">需要校验的数据</param>
/// <param name="dataSize">数据的长度(多少字节)</param>
/// <param name="crc32_recv">需要对比的校验码</param>
/// <returns></returns>
bool calculateAndCheckCRC32(const char* data, size_t dataSize, unsigned int crc32_recv)
{
    // 验证响应数据是否足够包含文件大小和CRC32校验值
    if (!data)
    {
        std::cout << "data is empty " << std::endl;
        return false;
    }
    
    // 计算CRC32
    unsigned int crc32_calc = crc32(0L, Z_NULL, 0);
    crc32_calc = crc32(crc32_calc, (const Bytef*)data, dataSize);
    printf("Src crc32: %u calculate crc32: %u \n", crc32_recv, crc32_calc);
    // 比较并返回校验结果
    if (crc32_recv == crc32_calc) 
    {
        std::cout << "CRC32校验成功" << std::endl;
        return true; // 返回文件大小,便于后续处理
    }
    else 
    {
        std::cout << "CRC32校验失败" << std::endl;
        return false; // 返回错误代码或特殊值,表示校验失败
    }
}

//
tool_class tc;
 const std::string requestUrl = "http://127.0.0.1:5000/?v=1&b=0&s=120&p=text";
 std::string response = tc.sendHttpRequest(requestUrl);
 if (response.size()>4)
 {
     int size = response.size();
     std::cout << "Received data size: "  << size << std::endl;

     unsigned int fileSize;
     memcpy(&fileSize, &response[0], 4);
     std::cout << "fileSize: " << fileSize << std::endl;
     unsigned int crc32_rec;
     memcpy(&crc32_rec, &response[size - 4], 4);
     std::cout << "crc32_rec: " << crc32_rec << std::endl;
     calculateAndCheckCRC32(response.data() + 4, response.size() - 8, crc32_rec);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
zlib128-dll是一个动态链接,用于提供与数据压缩和解压缩相关的功能。它基于zlib的128位版本,用于处理不同类型的数据文件。 首先,它可以用于压缩和解压缩文件。无论是文本文件、图像文件还是音频文件,zlib128-dll都可以对其进行压缩,以减少文件的大小并节省存储空间。压缩后的文件可以通过解压缩功能还原为原始文件,确保文件的完整性和可用性。 此外,zlib128-dll还具有流式压缩和解压缩功能。它可以逐个字节地处理输入数据流,并立即输出压缩或解压缩结果,而无需等待整个数据流加载完毕。这对于需要实时处理数据的应用程序非常有用,例如网页浏览器或多媒体播放器。 在网络通信中,zlib128-dll也扮演着重要的角色。它可以用于压缩互联网上的数据传输,减少网络带宽的消耗,提高数据传输的效率。此外,压缩后的数据可以更快地传输到目标服务器,从而减少网络延迟和响应时间。 最后,zlib128-dll还具有一些辅助功能,例如校验和生成和校验功能。它可以生成和验证数据的校验和,用于验证文件的完整性和一致性。这在文件传输、数据管理和错误检测方面非常有用。 总而言之,zlib128-dll是一个功能强大的动态链接,通过提供数据压缩和解压缩功能,可以帮助开发人员在不同的应用程序中处理和优化数据文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值