亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Java解決華為機(jī)試實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換?

 更新時間:2022年02月23日 08:48:25   作者:97的風(fēng)  
這篇文章主要介紹了基于Java解決華為機(jī)試實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換,文章舉例說明圍繞文章主題展開相關(guān)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1.簡述

描述:

原理:ip地址的每段可以看成是一個0-255的整數(shù),把每段拆分成一個二進(jìn)制形式組合起來,然后把這個二進(jìn)制數(shù)轉(zhuǎn)變成

一個長整數(shù)。

舉例:一個ip地址為10.0.3.193

每段數(shù)字                相對應(yīng)的二進(jìn)制數(shù)

10                          00001010

0                            00000000

3                            00000011

193                        11000001

組合起來即為:00001010 00000000 00000011 11000001,轉(zhuǎn)換為10進(jìn)制數(shù)就是:167773121,即該IP地址轉(zhuǎn)換后的數(shù)字就是它了。

本題含有多組輸入用例,每組用例需要你將一個ip地址轉(zhuǎn)換為整數(shù)、將一個整數(shù)轉(zhuǎn)換為ip地址。

數(shù)據(jù)范圍:保證輸入的是合法的 IP 序列

輸入描述:

輸入 :

  • 1 輸入IP地址
  • 2 輸入10進(jìn)制型的IP地址

輸出描述:

輸出:

  • 1 輸出轉(zhuǎn)換成10進(jìn)制的IP地址
  • 2 輸出轉(zhuǎn)換后的IP地址

示例1

輸入:

10.0.3.193
167969729

輸出:

167773121
10.3.3.193

2.代碼實(shí)現(xiàn)

方法一:通過二進(jìn)制進(jìn)行轉(zhuǎn)換

具體方法:

在問題中有兩個轉(zhuǎn)換過程,一個是將ip地址轉(zhuǎn)換為長整數(shù),一個是將長整數(shù)轉(zhuǎn)換為ip地址,通過題目中的轉(zhuǎn)換過程進(jìn)行轉(zhuǎn)換。 對于ip地址轉(zhuǎn)換成長整數(shù): 1、將ip地址切割成四段數(shù)字 2、每段數(shù)字用8位2二進(jìn)制數(shù)字表示 3、將四段二進(jìn)制數(shù)字組合 4、將二進(jìn)制數(shù)字轉(zhuǎn)換成長整數(shù) 對于長整數(shù)轉(zhuǎn)換成ip地址則步驟相反 1、將長整數(shù)轉(zhuǎn)換成32位二進(jìn)制數(shù)字 2、將32位二進(jìn)制數(shù)字進(jìn)行切割 3、將每段的二進(jìn)制數(shù)字轉(zhuǎn)換為十進(jìn)制數(shù)字 4、形成ip地址

import java.util.Scanner;

public class Main {
? ? public static void main(String[] args){
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? while(sc.hasNext()){
? ? ? ? ? ? String s = sc.next();
? ? ? ? ? ? if(s.contains(".")){
? ? ? ? ? ? ? ? System.out.println(ip2num(s));
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? System.out.println(num2ip(Long.parseLong(s)));
? ? ? ? ? ? }
? ? ? ? }
? ? }

? ? public static long ip2num(String ip){
? ? ? ? String[] iip = ip.split("\\.");
? ? ? ? StringBuilder sb = new StringBuilder();
? ? ? ? for(int i=0; i<4; i++){
? ? ? ? ? ? int num = Integer.parseInt(iip[i]); ?// 拆分
? ? ? ? ? ? String num2 = Integer.toBinaryString(num); ?//轉(zhuǎn)換為二進(jìn)制
? ? ? ? ? ? while(num2.length()<8){
? ? ? ? ? ? ? ? num2 = "0" + num2; ?// 拼接
? ? ? ? ? ? }
? ? ? ? ? ? sb.append(num2);
? ? ? ? }
? ? ? ? return Long.parseLong(sb.toString(), 2); ?// 轉(zhuǎn)化為10進(jìn)制
? ? }

? ? public static String num2ip(long num){
? ? ? ? String num2 = Long.toBinaryString(num); ?//轉(zhuǎn)換為2進(jìn)制
? ? ? ? while(num2.length()<32){
? ? ? ? ? ? num2 = "0" + num2;
? ? ? ? }
? ? ? ? String[] ans = new String[4];
? ? ? ? for(int i=0; i<4; i++){
? ? ? ? ? ? String s = num2.substring(8*i, 8*i+8); ?//拆分
? ? ? ? ? ? s = Integer.toString(Integer.parseInt(s, 2)); ?//轉(zhuǎn)化為10進(jìn)制
? ? ? ? ? ? ans[i] = s;
? ? ? ? }
? ? ? ? return String.join(".", ans); ?//拼接
? ? }
}

方法二:直接轉(zhuǎn)換(10進(jìn)制和256進(jìn)制)

具體方法:

在第一種方法中,我們通過二進(jìn)制進(jìn)行轉(zhuǎn)換,但是仔細(xì)分析之后,我們發(fā)現(xiàn),二進(jìn)制在轉(zhuǎn)換過程中并沒有起到作用,再進(jìn)行重新分析,我們可以發(fā)現(xiàn),ip地址實(shí)際上是256進(jìn)制下的四位數(shù)字,所以我們可以直接進(jìn)行轉(zhuǎn)換,將10進(jìn)制轉(zhuǎn)化為256進(jìn)制。

import java.util.Scanner;

public class Main {
? ? public static void main(String[] args){
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? while(sc.hasNext()){
? ? ? ? ? ? String s = sc.next();
? ? ? ? ? ? if(s.contains(".")){
? ? ? ? ? ? ? ? System.out.println(ip2num(s));
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? System.out.println(num2ip(Long.parseLong(s)));
? ? ? ? ? ? }
? ? ? ? }
? ? }

? ? public static long ip2num(String ip){
? ? ? ? String[] iip = ip.split("\\.");
? ? ? ? Long ans = (long)0;
? ? ? ? for(int i = 0; i<4; i++){
? ? ? ? ? ? ans = ans * 256 + Long.parseLong(iip[i]);
? ? ? ? }
? ? ? ? return ans;
? ? }

? ? public static String num2ip(long num){
? ? ? ? String[] ans = new String[4];
? ? ? ? for(int i=3; i>=0; i--){
? ? ? ? ? ? ans[i] = Long.toString(num % 256);
? ? ? ? ? ? num = num / 256;
? ? ? ? }
? ? ? ? return String.join(".", ans);
? ? }
}

到此這篇關(guān)于基于Java解決華為機(jī)試實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換 的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 利用binarySearch實(shí)現(xiàn)抽獎計(jì)算邏輯

    Java 利用binarySearch實(shí)現(xiàn)抽獎計(jì)算邏輯

    這篇文章主要介紹了Java 利用binarySearch實(shí)現(xiàn)抽獎計(jì)算邏輯,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Map集合中獲取key-value值的實(shí)現(xiàn)方法

    Map集合中獲取key-value值的實(shí)現(xiàn)方法

    這篇文章主要介紹了Map集合中獲取key-value值的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • maven-maven使用-P參數(shù)打包不同環(huán)境問題

    maven-maven使用-P參數(shù)打包不同環(huán)境問題

    這篇文章主要介紹了maven-maven使用-P參數(shù)打包不同環(huán)境問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java元注解meta-annotation和依賴注入詳解

    Java元注解meta-annotation和依賴注入詳解

    這篇文章主要給大家介紹了關(guān)于Java元注解meta-annotation和依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • java開發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗(yàn)方式

    java開發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗(yàn)方式

    這篇文章主要介紹了java開發(fā)之基于Validator接口的SpringMVC數(shù)據(jù)校驗(yàn)方式,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下
    2021-09-09
  • Java如何對方法進(jìn)行調(diào)用詳解

    Java如何對方法進(jìn)行調(diào)用詳解

    今天給大家整理了Java如何對方法進(jìn)行調(diào)用,文中有非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • 新手學(xué)習(xí)JQuery基本操作和使用案例解析

    新手學(xué)習(xí)JQuery基本操作和使用案例解析

    這篇文章主要介紹了新手學(xué)習(xí)JQuery基本操作和使用案例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot項(xiàng)目訪問任意接口出現(xiàn)401錯誤的解決方案

    SpringBoot項(xiàng)目訪問任意接口出現(xiàn)401錯誤的解決方案

    今天小編就為大家分享一篇關(guān)于SpringBoot項(xiàng)目訪問任意接口出現(xiàn)401錯誤的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • springboot+jsonp解決前端跨域問題小結(jié)

    springboot+jsonp解決前端跨域問題小結(jié)

    這篇文章主要介紹了springboot+jsonp解決前端跨域問題小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • SpringCloud Feign的使用代碼實(shí)例

    SpringCloud Feign的使用代碼實(shí)例

    這篇文章主要介紹了SpringCloud Feign的使用代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評論