我想知道是否有人可以帮助我,我只是在学习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];
有点依赖大/小恩迪安。