我会在 char 数组中复制一个 uint8_t 数组。我尝试了不同的解决方案:cast、memcopy、strcpy ......但它不起作用!!!我的小例子是:
uint32_t num = 123456789;
printf("\n num: %"PRIu32 "\n", num);
uint32_t x;
uint8_t a[4];
char b[4];
num=htonl(num);
a[0]=num;
a[1]=num>>8;
a[2]=num>>16;
a[3]=num>>24;
b[0] = a[0];
b[1] = a[1];
b[2] = a[2];
b[3] = a[3];
printf("\nA: %x %x %x %x", a[0],a[1],a[2],a[3]);
printf("\nB: %x %x %x %x", b[0],b[1],b[2],b[3]);
x= b[0] | b[1]<<8 | b[2]<<16 | b[3]<<24;
x=ntohl(x);
printf("\n x vale: %"PRIu32 "\n", x);
}
印刷品是:
num: 123456789
A: 7 5b cd 15
B: 7 5b ffffffcd 15
x: 123457023
为什么我在 x 中得到不同的数字?