首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于将IPv4、IPv6地址存储为字符串的大小

用于将IPv4、IPv6地址存储为字符串的大小
EN

Stack Overflow用户
提问于 2010-08-11 12:38:02
回答 7查看 51.8K关注 0票数 64

在MySQL数据库中,以字符串形式存储IPv4和IPv6地址的理想大小应该是多少。varchar(32)就足够了吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-08-11 12:42:36

假设字符串中的文本表示为 :

适用于IPv4的

  • 15个字符(适用于IPv6

的12+3 IPv6的xxx.xxx.xxx.xxx格式

这是字符串的最大长度。

存储为字符串的替代方案:

  • IPv4是32位的,因此可以容纳4个字节的MySQL数据类型就可以了,通常将INT UNSIGNEDINET_ATONINET_NTOA一起使用来处理从地址到数字以及从数字到地址的转换

选择INET_ATON( '209.207.224.40‘);-> 3520061480选择INET_NTOA(3520061480);->’209.207.224.40‘

对于

  • IPv6,遗憾的是MySQL没有16字节的数据类型,但是您可以将IPv6放入规范格式,然后将它们分成2个BIGINT (8字节),但这将使用两个字段。
票数 81
EN

Stack Overflow用户

发布于 2010-08-11 12:42:19

如果您将它们存储为字符串而不是位模式:

IPv4地址由四个带有三个.分隔符的三位十进制字符组成,因此只需要15个字符,如255.255.255.255

IPv6地址由8个4位十六进制字符和7个:分隔符组成,因此需要39个字符,如0123:4567:89ab:cdef:0123:4567:89ab:cdef

票数 9
EN

Stack Overflow用户

发布于 2010-08-11 12:41:53

在数字上,IPv4地址是32位长,而IPv6地址是128位长。因此,您至少需要16字节的存储空间。

如果您存储的“字符串”是字节形式的地址编码,那么16就足够了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3455320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档