2013-10-05 15 views
-2

我必須將十進制格式的32位IP地址轉換爲像「172.168.100.23」這樣的點分隔成32位連續二進制數字的字符串,如「10101100101010000110010000010111」。然後我必須分開7個MSB,即1010110和25個比特,即 0101010000110010000010111.我該怎麼辦?有沒有內置函數可以幫助我解決問題?在將地址轉換爲java中的二進制數後用點分隔的十進制格式的ip地址位分離?

我正在輸入的字符串

System.out.println("Enter an IP address"); 
String ip=input.next(); 

然後將其轉換成字符串

String delimiter="\\."; 
String[] array=ip.split(delimiter); 
String s4=array[0]; 
String s3=array[1]; 
String s2=array[2]; 
String s1=array[3]; 

然後我每個字符串轉換成整數

int num4=Integer.parseInt(s4); 
int num3=Integer.parseInt(s3); 
int num2=Integer.parseInt(s2); 
int num1=Integer.parseInt(s1); 

在此之後,我必須每個轉換數字轉換爲二進制數,如果數字的二進制小於8位,則用0填充msb 111)可能是(00010111)完成32位。 之後,我必須結合每個數字的所有單獨的位,最後我必須從其他25位分離出7個MSB。 請幫我完成這個問題

+2

已經回答了這個在你前面的問題http://stackoverflow.com/questions/19200861/how-can-character -be-added-at-end-of-string-in-java你可以說這個問題是如何不同的。 –

回答

0

你可以做什麼用的InetAddress

String ipAddress = "192.168.16.142"; 
InetAddress i = InetAddress.getByName(ipAddress); 

for (Byte b : i.getAddress()) { 
     Integer.toBinaryString(b); // Get your binary string 1110011101010110 
} 
相關問題