IPv4地址的二进制形式长度为32,使用我们常用的点分十进制形式进行表示那么最长长度为15,例如“255.255.255.255”
所以在posix的<netinet/in.h>中定义的IPv4地址字符串形式最大长度为16字节,‘\0’结束符也需要占据1个字节:
#define INET_ADDRSTRLEN 16IPv6地址的二进制形式长度为128,使用16进制形式进行表示如“ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff”,一开始我以为IPv6地址字符串形式最大长度为128/4+7+1=40字节
但是看posix的<netinet/in.h>中定义的IPv6地址字符串形式最大长度为46字节
#define INET6_ADDRSTRLEN 46原来IPv4映射的IPv6地址可能出现这种格式“ffff:ffff:ffff:ffff:ffff:ffff:255:255:255:255”,也就是45字节,加上结束符就是46字节了
本文详细解析了IPv4与IPv6地址的二进制长度及字符串表示的最大长度,IPv4地址字符串形式最大长度为16字节,IPv6地址字符串形式最大长度为46字节,并解释了IPv4映射到IPv6地址的特殊情况。
1612

被折叠的 条评论
为什么被折叠?



