gpt4 book ai didi

c++ - 在C++中解析数据包数据的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 10:01:24 25 4
gpt4 key购买 nike

我正在将Delphi App转码为C++,但遇到了一个问题,无法获得正确的方法来处理C++中的包头。

header 来自UCHAR buf中的“Dword”,我不希望这样:if(packet [0] == 0xFF && packet [1] == 0xFF ...);

例如:Delphi使用开关盒:

              case PDword(@Packet[6])^ of
$68FB0200:
begin
//Dword match correctly
End;
end;

有没有办法像在Delphi中那样在C++中做同样的事情?

已经检查了一些方法,但是没有通过比较。
UCHAR               *Packet ;
Packet = ParsePacket(buf->Buf, buf->Size);
// The ParsePacket Returns FB 00 00 00 78 00 01 F3 02 FD

DWORD Op1 = 0x01F302FD;
DWORD *p_dw = (DWORD*) Packet[6];
if (p_dw == Op1)
{
//Dword never match...
}

最佳答案

是的,可移植的C(和C++)方式是:

DWORD const Op1 = 0x01F302FD;
if (0 == memcmp(Packet + 6, &Op1, sizeof Op1)) { ... }

请注意,我们尚未尝试以32位的数量访问 Packet+6上的字节……它们很可能为此未对齐。我们只是在问是否存在与 Op1中相同的4字节序列。

关于c++ - 在C++中解析数据包数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62418462/

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