gpt4 book ai didi

c++ - 在 C++ 中解析缓冲区数据

转载 作者:搜寻专家 更新时间:2023-10-31 00:17:37 25 4
gpt4 key购买 nike

我的 C++ 项目有一个缓冲区,可以是任意大小并由蓝牙填充。传入消息的格式类似于 0x43 0x0B 0x00 0x06 0xA2 0x03 0x03 0x00 0x01 0x01 0x0A 0x0B 0x0B 0xE6 0x0D,其中以 0x43 开头,以 0x0D 结尾。所以,这意味着每次缓冲区被填充时,它可以根据上述消息格式有不同顺序的内容。

static const int BufferSize = 1024;
byte buffer[BufferSize];
  1. 解析此缓冲区中传入消息的最佳方法是什么?
  2. 由于我来自 Java 和 .NET,将每个提取的消息作为对象的最佳方法是什么?类可能是解决方案?
  3. 我已经创建了一个单独的类来像下面那样解析缓冲区,我的方向正确吗?

#include<parsingClass.h>
class A
{
parsingClass ps;
public:
parsingClass.parse(buffer, BufferSize);
}

最佳答案

class ReturnMessage{
char *message;
public:
char *getMessage(unsigned char *buffer,int count){
message = new char[count];
for(int i = 1; i < count-2; i++){
message[i-1] = buffer[i];
}
message[count-2] = '\0';
return message;
}
};
class ParserToMessage{
static int BufferSize = 1024;
unsigned char buffer[BufferSize];
unsigned int counter;
public:
static char *parse_buffer()
{
ReturnMessage rm;
unsigned char buffByte;
buffByte = blueToothGetByte(); //fictional getchar() kind of function for bluetooth
if(buffByte == 0x43){
buffer[counter++] = buffByte;
//continue until you find 0x0D
while((buffByte = blueToothGetByte()) != 0x0D){
buffer[counter++] = buffByte;
}
}
return rm.getMessage(buffer,counter);
}
};

关于c++ - 在 C++ 中解析缓冲区数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com