我有一个数组-
uint8_t arrayTest[] = {
0, 0xC1,
0, 0, 0, 0x0a,
0, 0, 0, 0x50
};
因此,以下带有uint32_t的printf显示了正确的输出“ a ”:
printf("%x ",ntohl(*((uint32_t *)(arrayTest+2))));
但是uint16_t 显示不正确,虽然我转发了数组指针两个字段,但输出是“ a0000 ”-
printf("%x ",ntohl(*((uint16_t *)(arrayTest+4))));
当我使用 %d 时也是一样的:
printf("%d ",ntohl(*((uint32_t *)(arrayTest+2))));
输出为“ 10 ”
printf("%d ",ntohl(*((uint16_t *)(arrayTest+4))));
输出为“ 655360 ”
为什么???