代码如下:
#include<memory>
#include<iostream>
#include<vector>
#include<functional>
#include<cstring>
class DataBlob{
public:
DataBlob():length_(0) {}
const std::unique_ptr<uint8_t[]> & data() const { return data_; }
size_t length() const { return length_; }
void set_data(std::unique_ptr<uint8_t[]> data) { data_ = std::move(data); }
void set_length(size_t len) { length_ = len; }
private:
std::unique_ptr<uint8_t[]> data_;
size_t length_;
};
class CRC {
public:
CRC();
void setData(std::vector<uint8_t> & vec);
void setDivide(std::vector<uint8_t> & vec);
bool Check();
bool AddFCS();
void print() const;
private:
DataBlob data_;
DataBlob divide_;
};
CRC::CRC()
{
}
void CRC::setData(std::vector<uint8_t> & vec)
{
data_.set_length(vec.size());
data_.set_data(std::unique_ptr<uint8_t []>