構造体フィールド (int) を char* バッファーにシリアライズしようとしましたが、間違っていると思います。
これは、このフィールドをコピーするために使用しているものです。
memcpy(payload + offset, &packet->payload.offset, sizeof(long int));
packet->payload.offset は long int で、値 '5' (ハードコード) が含まれています。次の点に注意してください。
私が印刷した場合:printf("offset: %ld \n", packet->payload.offset);
私は得る:offset: 5
しかし、私が印刷すると: printf("offset: %ld \n",&packet->payload.offset)
、私は得る:offset: 167120959
memcopy で 2 番目の引数の '&' を削除してバッファに '5' を書き込むと、セグメンテーション フォールトが発生しますが、そうしないと、代わりに 167120959 (アドレスだと思います) がバッファにコピーされます。実際の値。
ご助力ありがとうございます!私はできるだけ説明的であるように努めました。あなたが私を助けてくれることを願っています。