ip地址与long数值互相转换
生活随笔
收集整理的這篇文章主要介紹了
ip地址与long数值互相转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
IPv4地址是一個32位的二進制數,通常被分割位4個“8位二進制數”
一、將ip地址轉成long數值
將IP地址轉化成整數的方法如下:
1、通過String的split方法按.分隔得到4個長度的數組
2、通過左移位操作(<<)給每一段的數字加權,第一段的權為2的24次方,第二段的權為2的16次方,第三段的權為2的8次方,最后一段的權為1
二、將數值轉換為ip地址
將整數形式的IP地址轉化成字符串的方法如下:
1、將整數值進行右移位操作(>>>),右移24位,右移時高位補0,得到的數字即為第一段IP
2、通過與操作符(&)將整數值的高8位設為0,再右移16位,得到的數字即為第二段IP
3、通過與操作符吧整數值的高16位設為0,再右移8位,得到的數字即為第三段IP
4、通過與操作符吧整數值的高24位設為0,得到的數字即為第四段IP
代碼:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner;public class IpLong {public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));Scanner scanner = new Scanner(System.in);Boolean Mianmenu = true;while (Mianmenu){System.out.println("請查看您操作的選項:1.ip 2.long數值 3.退出");System.out.println("請輸入:");String s = bf.readLine();int i = Integer.parseInt(s);switch (i){case 1://通過左移位操作(<<)給每一段的數字加權,第一段的權為2的24次方,第二段的權為2的16次方,第三段的權為2的8次方,最后一段的權為1System.out.println("請輸入ip地址:");String ips = bf.readLine();String[] ip = ips.split("\\.");long ips1 = Long.parseLong(ip[0]) << 24;long ips2 = Long.parseLong(ip[1]) << 16;long ips3 = Long.parseLong(ip[2]) << 8;long ips4 = Long.parseLong(ip[3]);System.out.println(ips1);System.out.println(ips2);System.out.println(ips3);System.out.println(ips4);long ipInt = ips1 + ips2 + ips3 + ips4;System.out.println("ip為:"+ips+",轉換為整數為:"+ipInt);break;case 2://將整數值進行右移位操作(>>>),右移24位,右移時高位補0,得到的數字即為第一段IP//通過與操作符(&)將整數值的高8位設為0,再右移16位,得到的數字即為第二段IP//通過與操作符把整數值的高16位設為0,再右移8位,得到的數字即為第三段IP//通過與操作符把整數值的高24位設為0,得到的數字即為第四段IPSystem.out.println("請輸入整數值:");long ipzhi = scanner.nextLong();StringBuffer sb = new StringBuffer();sb.append(ipzhi >> 24);sb.append(".");sb.append((ipzhi & 0x00FFFFFF) >> 16);sb.append(".");sb.append((ipzhi & 0X0000FFFF) >> 8);sb.append(".");sb.append((ipzhi & 0X000000FF));System.out.println("整數為:"+ipzhi+"轉換為ip為"+sb);break;case 3:Mianmenu =false;break;default:System.out.println("請輸入正確的索引!!!");break;}}scanner.close();bf.close();} }總結
以上是生活随笔為你收集整理的ip地址与long数值互相转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Selenium 自动化测试从0实战经验
- 下一篇: 4行代码实现微信送祝福,这个新年有点不一