c++ - 排序具有特定结构的数据包缓冲区

标签 c++ sorting visual-c++ buffer pcm

我需要根据SEQ编号(这是一个无符号的4字节整数),以升序对通过TCP服务器/网络传输的数据包进行排序。换句话说,我想重新排列数据缓冲区(为简单起见,我使用std::vector),以便数据按SEQ的升序排列,后面分别是CHECKSUM和LEN(长度/大小以字节为单位)。数据包,当然还有实际(字节)数据...

每个数据包都遵循以下概述的结构,并且将有重复的SEQ号(一旦我有顺序的数据,使用CHECKSUM机制验证好的数据包就不会有太多困难)。



任何想法或协助将不胜感激,如果事先得到答复,我也深表歉意。

最佳答案

根据您的问题。 vector<byte>代表您的缓冲区

以下是用于解释的伪代码。

vector<byte> buffer;
// receive data;

// packet as a struct    
vector<packet> packets = extract_packet( &buffer );

sort(packets .begin(), packets .end(), 
[](const packets & a, const packets & b) -> bool
{ 
    return a.SEQ < b.SEQ; 
});

关于c++ - 排序具有特定结构的数据包缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62336295/

相关文章:

c++ - 从 Wstring 转换为 CComBstr

c++ - 试图读取AIFF文件意外错误与指针位置等有关

Java - 重写 Comparable 的compareTo 方法后无法对用户定义的数组进行排序

c++ - 我的图形中的拖放功能 - 基于对话框的 MFC

c++ - 在 C++ 中,有没有办法锁定对象本身?

php - 同一 OpenID 端点上的不同登录之间的 OpenID 有何不同

Python 对字符串列表进行排序

java - 按字母顺序重新排序字符串变量

c++ - Sin 算法不起作用

c - 如何在 Visual C++ Express 中运行 .lib 项目中的单个 .c 文件?