この問題があります。長さを動的に変更するペイロードがあります。このペイロードをカットしないと、私にとってゴミのような情報もあるでしょう。したがって、ペイロードの長さに基づいてペイロードをカットしたいと思います。
私はコードのこの部分を持っています:
uint64_t data_tmp = HTONLL((uint64_t) zp->data);
uint8_t len = zp->length;
uint64_t mask = 0xFFFF >> (64 - len);
data_tmp = data_tmp & mask;
printf("DATA_TMP = %llu\n", data_tmp);
zp->data は t->payload フィールドに書き込まれた後です。これが私のペイロードです。これは 64 ビット フィールドです。
このペイロードを一時的に受け取りたい。uint8 型のペイロード長 (zp->length フィールド) を計算します。64バイトをシフトするマスクを作成した後-payload_lengthを一時ペイロードに適用し、必要なデータのみとすべてゼロのフィールドを取得できるようにします。
これどうやってするの?
例えば。payload_length が 01 でペイロードが 00+..............(ゴミ) 64 バイトで 00000000 のようなペイロードを取得したい場合。
私のpayload_lengthが13で、ペイロードが1284732089322309の場合....13バイトだけ取得したい。
言いづらかったらすいません…