Oracle中IP转Long 和java中IP转Long

前端之家收集整理的这篇文章主要介绍了Oracle中IP转Long 和java中IP转Long前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. Oracle中IP转long 和Long转IP
  1. create or replace function ip2number(ip varchar2)
  2. return number
  3. is
  4. ip_num_hex varchar2(80);
  5. begin
  6. if (regexp_like(ip,'^(/d{1,3})/.(/d{1,3})$')) then
  7. ip_num_hex := lpad(trim(to_char(regexp_replace(ip,3})$','/1'),'XX')),2,'0') ||
  8. lpad(trim(to_char(regexp_replace(ip,'/2'),'/3'),'/4'),'0');
  9.  
  10. return to_number(ip_num_hex,'XXXXXXXX');
  11. else
  12. return -1;
  13. end if;
  14. exception
  15. when others then
  16. return -99999999999;
  17. end;
  18.  
  19. select ip2number('169.254.55.6') from dual;
  20.  
  21. IP2NUMBER('169.254.55.6')
  22. -------------------------
  23. 2852009734
  24.  
  25. create or replace function number2ip(num number)
  26. return varchar2 is
  27. ip_num_hex varchar2(8);
  28. begin
  29. ip_num_hex := lpad(trim(to_char(num,'XXXXXXXX')),8,'0');
  30. return to_number(substr(ip_num_hex,1,2),'XX') || '.' ||
  31. to_number(substr(ip_num_hex,3,5,7,'XX');
  32. exception
  33. when others then
  34. dbms_output.put_line(sqlerrm);
  35. return null;
  36. end;
  37.  
  38. select number2ip(2852009734) from dual;
  39.  
  40. NUMBER2IP(2852009734)
  41. --------------------------------------------------------------------------------
  42. 169.254.55.6

2.java中实现方式

  1. /** * ip地址转成整数. * @param ip * @return */
  2. public static long ip2long(String ip) {
  3. String[] ips = ip.split("[.]");
  4. long num = 16777216L*Long.parseLong(ips[0]) + 65536L*Long.parseLong(ips[1]) + 256*Long.parseLong(ips[2]) + Long.parseLong(ips[3]);
  5. return num;
  6. }
  7.  
  8. /** * 整数转成ip地址. * @param ipLong * @return */
  9. public static String long2ip(long ipLong) {
  10. //long ipLong = 1037591503;
  11. long mask[] = {0x000000FF,0x0000FF00,0x00FF0000,0xFF000000};
  12. long num = 0;
  13. StringBuffer ipInfo = new StringBuffer();
  14. for(int i=0;i<4;i++){
  15. num = (ipLong & mask[i])>>(i*8);
  16. if(i>0) ipInfo.insert(0,".");
  17. ipInfo.insert(0,Long.toString(num,10));
  18. }
  19. return ipInfo.toString();
  20. }

猜你在找的Oracle相关文章