piwik取ip:ip与16进制互转

来源:互联网 发布:三挫仑在淘宝上叫什么 编辑:程序博客网 时间:2024/05/29 14:07

piwik取ip:ip与16进制互转


1、存储

1.1 ip在数据库中以16进制存储

网络地址: 192.168.33.123
每一个值最大不会越过255,也就是十六进制的FF,两个Byte刚好表示的最大值是255,
这样子,就可以用一个32位的整形来保存这个地址
192 168 33 123
1100 0000 1010 1000 0010 0001 0111 1011
把这些二进制合在一起就是32位的数了
11000000101010000010000101111011
十进制为
3232244091

1.2 php

piwik是php语言,php中有ip2long(),long2ip()2个函数实现ip与进制互转
存到数据库中就是16进制的短地址了。

2、mysql

mysql内建函数支持
SELECT inet_ntoa(3520061481); –> 209.207.224.41
SELECT INET_ATON(‘209.207.224.41’); –> 3520061481

SELECT inet_ntoa(conv(hex(location_ip), 16, 10)) as ip, idvisitor FROM piwik_log_visit;

3、oracle

piwik数据库用的mysql,我同步回本地的oracle,取ip实现如下:

select     idvisitor,trunc(ip/16777216)||'.'|| trunc( mod(ip, 16777216)/65536) ||'.'|| trunc(mod(ip,65536)/256)||'.'|| trunc(mod(ip,256)) as ipfrom    (select idvisitor,location_ip as ip from PIWIK_LOG_VISIT)

3、java

如果数据库中取出来没转换好,需在程序中实现,java代码如下

long2ip:

public class test {    public static void main(String[] args) {        long lon = 0x1b9f160f;        String ip = "";        int[] b = new int[4];        b[0] = (int) ((lon >> 24) & 0xff);        b[1] = (int) ((lon >> 16) & 0xff);        b[2] = (int) ((lon >> 8) & 0xff);        b[3] = (int) (lon & 0xff);        ip = Integer.toString(b[0]) + "." + Integer.toString(b[1]) + "." + Integer.toString(b[2])+ "." + Integer.toString(b[3]);        System.out.println(ip);    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 c1驾照分扣完了怎么办 驾照扣完12分后怎么办 驾照扣了60多分怎么办 驾照被扣了12分怎么办? c1驾照记满12分怎么办 不交钱不让验房怎么办 中考考号忘了怎么办 高考考生号忘了怎么办 1岁宝宝吞了硬币怎么办 小孩吞了5角硬币怎么办 10小孩吞了硬币怎么办 小孩吞了5毛硬币怎么办 小孩把硬币吞了怎么办 高三数学成绩差怎么办 没交社保的工龄怎么办 购置税证明丢了怎么办 车登记证书丢了怎么办 车辆登记书丢了怎么办 车贷分期还完了怎么办 住宅70年到期后怎么办 在外地扣了12分怎么办 英语6级证书丢了怎么办 孩子腺样体肥大鼻子堵塞怎么办 孩子初中成绩太差怎么办 交违章罚单丢了怎么办 违章缴费单丢了,怎么办 违章处理单掉了怎么办 驾驶证被扣9分后怎么办 车子违章扣50分怎么办 车子扣了12分怎么办 大学把档案丢了怎么办 学校把档案丢了怎么办 高考考了200多分怎么办 高考报名号忘了怎么办 中考只考500分怎么办 档案自提了之后怎么办 冬天衣服上的毛怎么办 四维预约不上怎么办 交了订金后悔了怎么办 信而富认证失败怎么办 南京市民卡坏了怎么办