我正在编写一个程序并使用 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
)的末尾,它小于一个字节或大于一个字节,所以它不是 8 的倍数(不会在整个字节边界上完成),所以memcpy()
不能使用(我不相信?)。
我想再添加 16 位数据,大约 4 个字节。首先,我需要将一个值添加到txtBuffer
我存储在 an 中的接下来的 3 位中int
,以及始终为 0 的第四位。接下来我需要复制另一个 12 位值,我再次将它保存在 an 中int
。
所以存储在 anint
中的第一个十进制值介于 0 和 7 之间,我提到的第二个数字也是如此,它进入最后 12 位。存储值在 2^12 范围内。例如,我应该将最后三位“位复制”int
到内存中,还是应该如何将所有这些值合并在一起?
有没有办法可以将这三个值编译成 4 个字节以使用 memcpy 进行复制,或者我应该使用 bitset 之类的东西一次复制它们?
我应该如何解决这个问题?
谢谢你。