我有一个数组 -
uint8_t arrayTest[] = {
0, 0xC1,
0, 0, 0, 0x0a,
0, 0, 0, 0x50
};
以下 printf uint32_t 显示正确的输出“ 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 ”
为什么???
答案 0 :(得分:1)
nothl
仅用于转换32位数量。对于16位数量,它将产生不正确的结果,至少在小端系统上是这样。请使用ntohs
。