c++ - Boost CRC问题: different results with the same parameters

标签 c++ boost crc

我是第一次使用 CRC (boost::crc_32_type),我注意到使用相同的参数调用 process_bytes() 方法两次我得到的结果不同结果。正常吗?

#include <boost/crc.hpp>
#include <ios>              // for std::ios_base, etc.
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string              data1, data2;
    boost::crc_32_type  result1, result2;

    data1 = "This is a test string";
    data2 = data1;

    result1.process_bytes(data1.c_str(), data1.length());

    cout << "result1: " << hex << uppercase << result1.checksum() << endl;

    result1.process_bytes(data1.c_str(), data1.length());

    cout << "result1: " << hex << uppercase << result1.checksum() << endl;

    result2.process_bytes(data1.c_str(), data1.length());

    cout << "result2: " << hex << uppercase << result2.checksum() << endl;

    return 0;
}

这是输出:

result1: 2DB69898
result1: E29C91
result2: 2DB69898

最佳答案

根据手册,checksum() 返回“到目前为止传入的数据的 CRC 校验和”。因此,第二个校验和是data1与其自身串联的校验和,自然不同于data1的校验和。

关于c++ - Boost CRC问题: different results with the same parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280791/

相关文章:

networking - CRC计算卡住

c++ - 为什么 Boost 原子使用中的多生产者队列是无等待的

c++ - 我怎么知道鼠标是否在小部件上?

c++ - Visual 2013 插件,用于记录您从事项目的时间。

c++ - 用 C/C++ 包装 Mac OS X 特定代码的宏

ios - Swift 十六进制到字节 (iOS)

python - boost python hello程序上的导入错误

C++ boost ublas + units 维数约束

c++ - 将标记转换为 char* const* 时,使用 boost 对字符串进行标记失败

c++ - 如何将 boost::crc_optimal 与二进制数组一起使用(0's and 1' s 的数组)