C++ 数据块解析函数 ReadBlock 实现

该函数从字节数组中读取数据并解析成 DataBlock 结构体。

std::vector<DataBlock> ReadBlock(const std::vector<uint8_t>& data) {
    int blockNum = BytesToUInt(data[0], data[1]);
    std::vector<DataBlock> blocks;
    uint64_t pos = 2;
    for (int i = 0; i < blockNum; i++) {
        uint16_t code = ByteTo10UInt(data[pos]);
        pos++;
        std::vector<uint8_t> summaryBytes(data.begin() + pos, data.begin() + pos + 18);
        std::string summary = ByteToGB2312Hans(summaryBytes);
        pos += 18;
        uint32_t len = BytesToUInt(data[pos], data[pos + 1], data[pos + 2], data[pos + 3]);
        pos += 4;
        std::vector<uint8_t> blockDataByte(data.begin() + pos, data.begin() + pos + len);
        pos += len;
        DataBlock dataBlock = { code, summary, len, blockDataByte };
        blocks.push_back(dataBlock);
    }
    return blocks;
}

函数参数:

  • data: 字节数组,包含多个数据块的信息

函数返回值:

  • blocks: 一个包含所有解析出的 DataBlock 结构体的向量

函数实现步骤:

  1. data 的前两个字节读取块数量 blockNum
  2. 初始化一个空向量 blocks 来存储解析出的数据块。
  3. 使用循环遍历每个数据块,解析每个数据块的信息,包括代码 code、摘要 summary、长度 len 和数据 blockDataByte
  4. 将每个解析出的数据块添加到 blocks 向量中。
  5. 返回 blocks 向量。

注意:

  • BytesToUIntByteToGB2312Hans 是未定义的函数,需要根据实际情况进行定义。
  • DataBlock 结构体需要提前定义,包含 codesummarylendata 等成员变量。
  • 代码中使用了 std::vector 来存储数据块和字节数组,可以根据实际情况使用其他容器类型。
C++ 数据块解析函数 ReadBlock 实现

原文地址: https://www.cveoy.top/t/topic/nVH3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录