c-为什么在IN6_ADDR中使用并集来表示IP

  • 本文关键字:IP 表示 ADDR IN6 c networking
  • 更新时间 :
  • 英文 :


我正在使用C在Windows上学习网络。我遇到了IN6_ADDR结构,它将IPv6地址表示为2个阵列的联合:

typedef struct in6_addr {
union {
UCHAR  Byte[16];
USHORT Word[8];
} u;
} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;

我无法理解为什么有人想要2个数组的联合而不是1个数组。作出这种声明的原因是什么?请注意,这两个数组都是128位长。

IPv6地址通常以使用2字节组的格式编写,例如

2001:0db8:85a3:0000:0000:8a2e:0370:7334

这些组中的每一个对应于CCD_ 2阵列的一个元素。

但有时处理地址的每个字节也很有用。在这种情况下,您将使用Byte数组,而不必移动和屏蔽Word的元素。

IPv6地址通常表示为一组16位值,例如:

2001:0db8:0000:0000:0000:8a2e:0370:7334

Word成员允许您单独读取这些16位字,而不是一次读取单个字节。

最新更新