我正在接收一个特定 size_t len 的 const char* msg 类型流。在某个字节偏移处有一个序列号(32 或 64 字节,我不确定是哪个)所以我的想法是每次收到其中一个消息时执行以下操作:
for (int i = 0; i < 30; ++i)
{
uint32_t seq = *(uint32_t*) msg[i];
cout << "seq" << i << " " << seq << endl;
}
//and similar for 64 bytes
以便之后我可以将具有相同偏移量的行分组,并查看哪个偏移量 i
给我顺序输出。这个问题是我对以下内容进行了段错误:
(gdb) p *(uint32_t*) msg[i]
Cannot access memory at address 0x2d
如何实现我的序列号搜索小想法?
最佳答案
尝试:
uint32_t seq = *(uint32_t*) &msg[i];
和
(gdb) p *(uint32_t*)&msg[i]
编辑:一个更大的变化,可能更便携是:
uint32_t seq;
memcpy(&seq, msg + i, sizeof(seq));
seq = ntohl(seq);
关于c++ - 在一系列 char* 缓冲区中寻找序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459667/