数据库怎么存储ip地址

一、写在前面

今天看项目的时候,想找一个ip地址,但是看到打印的日志里面却有一个长长的十进制 322237939

然后就产生了疑惑,ip地址不是182.232.231.174这种形式的吗?怎么需要转成十进制,怎么映射到十进制

二、需求在哪里

我在想 322237939 这种表示ip地址的方式 比 “192.168.9.115” 这种表示方法好在哪?

我能想到的一点,就是存数据库的时候,int上面建索引比string建索引要高效

三、点分十进制的由来

查了下资料,我们平时用的那种形式192.168.9.115,并不是最开始的

最开始的ip地址,规定是4个字节

例如一个采用二进制形式的IP地址是
“00001010000000000000000000000001”

当然,这个二进制就是一个普通的二进制,可以转换成十进制,十六进制

只不过人们记忆这串这么长的数字不方便,所以就发明了“点分十进制”,类似于人民币千位逗号表示一样,方便人们记忆

上面那一串二进制就被切成四个,然后变成10.0.0.1 ,方便记忆

四、怎么换算

怎么把 322237939  映射成 “192.168.9.115”

首先把 322237939 换成十六进制  ,也就是 C0 A8 09 73(16进制)

然后十六进制,没两个就是表示一个字节,就是

C0 -> 192

a8 -> 168

09 -> 09

73 -> 115

像上面一样,转成十进制,就得到了我们平时看到的,192.168.9.115这种ip地址形式

五、扩展

能否用你熟悉的语言写一个函数呢   IpFormat(322237939)= “192.168.9.115”?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值