如何将IP地址转换为二进制(16)字符串?

问题描述:

我需要知道如何将IP地址转换为二进制(16)字符串。我需要这个在MySql数据库中使用,但转换不需要是sql语句/查询。如何将IP地址转换为二进制(16)字符串?

+4

“或任何其他字符串”? –

+0

你为什么要将地址存储为二进制字符串?这些搜索和处理起来要困难得多,节省的空间太小,实在不值得。 MySQL不能处理二进制形式的IP地址,它们只是数据而已。请记住像Postgres这样的其他数据库具有强大支持的本地IP列类型。 – tadman

+0

我有这个字段的MySql表,我想手动插入一个IP值到它。我没有设计,也不能改变它的方式 - 我只需要将IP字符串转换为二进制(16)字符串。 – asknomore

IPv4地址在内存中需要最少4个字节(32位)。因此,如果您希望将地址存储在2字节的空间中,那么如果您的组织具有子网且网络掩码为255.255.x.x或255.255.255.x,则可以使用它。在这只是将主机部分存储在数据库中。

eg 10.80.100.26 netmask 255.255.255.0然后只在你的数据库中存储26。

我希望它能帮助你。

谢谢

+2

IPv4地址需要*正好*四个字节。很少有组织会沿着一个CIDR子网划分,很常见的是,您将拥有多个完全不相关的组织。只存储主机正在寻求一个麻烦的世界。 – tadman

+0

那是对的。但鉴于他的限制,如果他很幸运(Single CIDR subnet),那么他可以用这种方式存储2个字节。 –

+0

这个建议显然是错误的。没有人会这样做,并有充分的理由。这是完全荒谬的。保存两个字节并增加大量混淆是非常可怕的折衷。 – tadman