私はプログラムを作成し、memcpyを使用して、次のコードを使用して数バイトのデータをコピーしています。
#define ETH_ALEN 6
unsigned char sourceMAC[6];
unsigned char destMAC[6];
char* txBuffer;
....
memcpy((void*)txBuffer, (void*)destMAC, ETH_ALEN);
memcpy((void*)(txBuffer+ETH_ALEN), (void*)sourceMAC, ETH_ALEN);
txBuffer
ここで、1バイト未満または1バイトを超えるデータをこのバッファー()の最後にコピーしたいので、8の倍数ではありません(バイト境界全体で終了しません)。memcpy()
使用できません(信じられませんか?)。
ラウンド4バイトである16ビット相当のデータを追加したいと思います。txtBuffer
最初に、に格納した次の3ビットに値を追加する必要がint
あり、4番目のビットは常に0です。次に、別の12ビット値をコピーする必要があります。これも。にありint
ます。
したがって、に格納されている最初の10進値int
は0から7の間であり、最後の12ビットに入る2番目の数値についても同じことが言えます。保存された値は2^12の範囲内です。たとえば、int
メモリの最後の3ビットを「ビットコピー」する必要がありますか、それともこれらすべての値を何らかの方法でマージする必要がありますか?
これらの3つの値を4バイトにコンパイルしてmemcpyでコピーする方法はありますか、それともビットセットのようなものを使用してビットごとにコピーする必要がありますか?
この問題をどのように解決すればよいですか?
ありがとうございました。