Если источником и назначением являются массивы, должно работать следующее:
#include <stdio.h>
#include <string.h>
int main()
{
unsigned int src[] = { 0x12345678, 0X9ABCDEFF, 0XABCD2468 };
unsigned int dest[4] = { 0 };
typedef unsigned char BYTE;
BYTE *pSrc = (BYTE*)(src), *pDst=(BYTE*)dest;
for (int i=0; i<4; ++i)
{
memcpy(pDst, pSrc, 3);
pSrc += 3;
pDst += 4;
}
for (int i=0; i<4; ++i)
{
printf("%x\n", dest[i]);
}
return 0;
}
Вывод:
345678
deff12
689abc
abcd24