所以我有两个动态分配的整数变量(A和B)。它们中的每一个都是12的大小,每个都是48个字节。我想以字节为单位从一个数据传输到另一个数据,并希望在32轮(循环)中完成传输。我将在下面描述我想要实现的目标:
继续将2个字节传输到第16轮。在第16轮中,将传输第31个和第32个字节。
然后从第17轮到第32轮,传输速率为1字节/回合,即
...
下面我附上了一段代码:
int *A,*B;
A = (int *)malloc(12*sizeof(int));
B = (int *)malloc(12*sizeof(int));
for(int i= 0;i<12;i++)
A[i] = i+1;
for(int i=0;i<32;i++){
if(i<16)
//Transfer two byte from A to B in first 16 rounds, 2 bytes/round
else
// transfer 1 byte from A to B in next 16 rounds, 1 byte/round
}
free(A);
free(B);
我可以理解这可能是使用memcpy
实现的,但我在执行地址计算时感到困惑。我不确定我是否采取了正确的方法。如果我在解释中足够清楚,请告诉我。任何帮助将非常感谢。谢谢。
答案 0 :(得分:2)
您需要使用char*
指针来访问缓冲区的各个字节,并使用uint16_t*
来获取2字节块。
char *cA = (char *)A;
char *cB = (char *)B;
uint16_t *iA = (uint16_t *)A;
uint16_t *iB = (uint16_t *)B;
for(int i=0;i<32;i++){
if(i<16) {
//Transfer two byte from A to B in first 16 rounds, 2 bytes/round
iB[i] = iA[i];
}
else {
// transfer 1 byte from A to B in next 16 rounds, 1 byte/round
cB[16 + i] = cA[16 + i];
}
}