INET_ADDRSTRLEN 和 INET6_ADDRSTRLEN 長度

在<netinet/in.h>中有這兩個宏的定義code

#define INET_ADDRSTRLEN 16
#define INET6_ADDRSTRLEN 46

INET_ADDRSTRLEN

  1. 這是32位ipv4地址,用10進制+句點表示時,所使用內存長度的最大值。
  2. 111.111.111.111 這是最大長度的一個例子,其中包括4組十進制整數,每組3個,三個句點,再加一個NULL符號,因此總共須要4*3+3+1=16個字節

INET6_ADDRSTRLEN

  1. 這是128位ipv6地址,用十六進制+冒號顯示時,所使用內存長度的最大值
  2. 也支持兼容ipv4的兼容格式
  3. 非兼容格式:1111:1111:1111:1111:1111:1111:1111:1111,這是非兼容格式最大長度的一個例子,其中包括8組十六進制整數,每組4個,七個冒號,再加一個NULL結束符,因此總共須要8*4+7+1=40個字節
  4. 兼容格式:1111:1111:1111:1111:1111:1111:111.111.111.111,這是兼容格式最大長度的一個例子,其中包括6組十六進制整數,每組4個,六個冒號,再加一組ipv4地址,一個NULL結束符,因此總共須要8*4+6+16=46個字節
相關文章
相關標籤/搜索