将阵列分为一半,然后使用C将每个部分放入未签名的INT中



我想知道是否有人可以帮助我,我只是在学习C一个大小[4]中的一个无符号int。仅使用给定类型

所以我有

#define WORD32 unsigned int
#define BYTE   unsigned char
BYTE c0[8];
WORD32 FirstHalf, SecondHalf;
c0[8];

您可以多种方法,但是请记住endianess(我的示例是在Little Endian中)。

使用memcpy:

memcpy(c0, &FirstHalf, sizeof(WORD32));
memcpy(&c0[sizeof(WORD32)], &SecondHalf, sizeof(WORD32));

简单的评估:

FirstHalf = (WORD32) c0[0] | (WORD32) c0[1] << 8 | (WORD32) c[2] << 16 | (WORD32) c[3] << 24; 
SecondHalf = (WORD32) c0[4] | (WORD32) c0[5] << 8 | (WORD32) c[6] << 16 | (WORD32) c[7] << 24;

尝试以下:

char array[8] = {1,2,3,4,5,6,7,8};
char array1[4];
char array2[4];
unsigned int number1;
unsigned int number2;
memcpy(array1, array, 4);
memcpy(array2, array + 4, 4);
number1 = (array1[3] << 24) + (array1[2] << 16) + (array1[1] << 8) + array1[0];
number2 = (array2[3] << 24) + (array2[2] << 16) + (array2[1] << 8) + array2[0];

有点依赖大/小恩迪安。

最新更新