C++ 数据块解析函数 ReadBlock 实现
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 结构体的向量
函数实现步骤:
- 从
data的前两个字节读取块数量blockNum。 - 初始化一个空向量
blocks来存储解析出的数据块。 - 使用循环遍历每个数据块,解析每个数据块的信息,包括代码
code、摘要summary、长度len和数据blockDataByte。 - 将每个解析出的数据块添加到
blocks向量中。 - 返回
blocks向量。
注意:
BytesToUInt和ByteToGB2312Hans是未定义的函数,需要根据实际情况进行定义。DataBlock结构体需要提前定义,包含code、summary、len和data等成员变量。- 代码中使用了
std::vector来存储数据块和字节数组,可以根据实际情况使用其他容器类型。
原文地址: https://www.cveoy.top/t/topic/nVH3 著作权归作者所有。请勿转载和采集!