IP地址與整數(shù)形式之間的轉(zhuǎn)換

整數(shù)形式轉(zhuǎn)換成IP地址

思路:

  1. 將整數(shù)值進行右移位操作(>>>),右移24位,右移時高位補0,得到的數(shù)字即為第一段IP。ps:>>>是有符號整數(shù)右移運算符,>>是無符號整數(shù)右移運算符。
  2. 通過與操作符(&)將整數(shù)值的高8位設為0,再右移16位,得到的數(shù)字即為第二段IP。
  3. 通過與操作符吧整數(shù)值的高16位設為0,再右移8位,得到的數(shù)字即為第三段IP。
  4. 通過與操作符吧整數(shù)值的高24位設為0,得到的數(shù)字即為第四段IP。
public class numberchangetoip {
    public static void main(String[] args) {
        long ip = 3232235521l;
        StringBuffer result = new StringBuffer();   
        result .append(String.valueOf((ip >> 24)));//直接右移24位    
        result .append(".");        
        result .append(String.valueOf((ip & 0x00FFFFFF) >> 16));//將高8位置0,然后右移16位
        result .append(".");        
        result .append(String.valueOf((ip & 0x0000FFFF) >> 8));//將高16位置0,然后右移8位
        result .append(".");
        result .append(String.valueOf((ip & 0x000000FF)));//將高24位置0
        System.out.println(result.toString());
    }
}

運行結(jié)果:

IP地址轉(zhuǎn)換成整數(shù)形式

其實我面試的時候只有上面一個問題,但是怎能輕易放過這個問題呢。
思路

  1. 通過String的split()方法根據(jù)IP字符串中的".",將其分成四段。
  2. 通過Long的parseLong方法將每一段轉(zhuǎn)化成一個3位整數(shù)。
  3. 通過左移位操作(<<)給每一段的數(shù)字加權,第一段的權為2的24次方,第二段的權為2的16次方,第三段的權為2的8次方,最后一段的權為1。
public static void main(String[] args) {
        String ip = "192.168.0.1";
        String[] items = ip.split("\\.");
        long[] nums = new long[4];
        for (int i = 0; i < items.length; i++) {
            nums[i] = Long.parseLong(items[i]);//將分出的每一個數(shù)字字符串轉(zhuǎn)換成long型
            System.out.println(nums[i] + ":" + Long.toBinaryString(nums[i]));//每一個數(shù)字與其對應的二進制表示
        }
        long result = (nums[0] << 24) + (nums[1] << 16) + (nums[2] << 8) + nums[3];
        System.out.println(Long.toBinaryString(result));
        System.out.println(result);
    }
}

運行結(jié)果:

當然,以上只是大致思路,還有多處細節(jié)需要考慮:

  1. ip 地址是有范圍的,所以要對無意義的進行檢驗。
  2. 輸入非法,如空或負數(shù)。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容