基于C++我收到几组uint8_t的数据但是我无法判断每一帧,只知道帧头是eb 90其他都不知道,我怎么通过代码将他们分割出来
时间: 2024-09-26 12:15:51 浏览: 31
当你接收到包含EB(十六进制对应147)和90(144)作为帧头的`uint8_t`数据,但不清楚后续帧结构的情况下,可以尝试一种简单的解码策略。首先,你可以创建一个循环,遍历整个数据流,并检查每两个字节是否匹配EB和90。如果找到,就可以认为找到了一个完整的帧开始。接下来,你可以存储这部分数据直到遇到下一个帧头或者达到某个预设的最大帧长度。
下面是一个基本的伪代码示例:
```cpp
#include <vector>
std::vector<uint8_t> frameData;
bool isFrameStart = false;
// 假设data是你接收到的原始数据
for (size_t i = 0; i < data.size(); ++i) {
uint8_t byte = data[i];
// 如果当前字节和前一个字节拼成EB90,则开启帧处理
if (i > 0 && byte == 0x90 && data[i - 1] == 0xEB) {
isFrameStart = true;
frameData.clear();
}
// 添加到帧数据中
if (isFrameStart) {
frameData.push_back(byte);
} else {
continue; // 如果不是帧头,跳过
}
// 检查帧结束,例如查找特定标志或其他条件
if (/* 达到帧结束标志或其他条件 */) {
break;
}
}
// 现在frameData就包含了完整的帧数据
```
请注意,这个例子假设帧是以特定的结束标记结尾。如果你对帧结构有更多的了解,比如知道每个帧有多少字节,或者后续帧的开始位置,那么可以根据这些信息调整解析过程。
阅读全文