采风文学屋
JAVAIP地址⽤⼀个整形表⽰,IP地址和Int互转 IP 地址分为4个字段,每个字段范围是0-255,刚好⽤⼀个字段可以表⽰,JAVA⼀个int是4个字节,每个字节表⽰⼀个IP 段。代码: public class TestIPInt extends TestCase {
public void testIPToInt() {
int ip1 = 1;
int ip2 = 1;
ai ei ui 教学设计int ip3 = 1; int ip4 = 2;
//1.1.1.2 ==16843010
//255.255.255.255 == -1
int ipint = ipToInt(ip1, ip2, ip3, ip4);
System.out.println("ipint:" + ipint);
int[] ipArr = intToIp(ipint);
for (int i = 0; i < 4; i++) {
System.out.print(ipArr[i] + ".");
}
System.out.println();
中岛敦}
/**
* ip to int
* sample:192 168 1 2
*
* @param ip1
* @param ip2
* @param ip3
* @param ip4
* @return
*/
public int ipToInt(int ip1, int ip2, int ip3, int ip4) {
return ipToInt(new int[]{ip1, ip2, ip3, ip4});
}
public int ipToInt(int[] ipArr) {
int ipInt = 0;
for (int i = 0; i < ipArr.length; i++) {
ipInt <<= 8;
ipInt ^= (byte) ipArr[i] & 255;
}
return ipInt;
}
public int[] intToIp(int ipInt) {
int[] ipArr = new int[4];
for (int i = 0; i < 4; i++) {
ipArr[3 - i] ^= (byte) ipInt & 255;
ipInt >>>= 8;
}
return ipArr;
}
private int byteToInt(byte[] bytes) {
// Int(bytes, 0);
int n = 0;
int offset = 0;夏奈尔女装
int length = 4;
for (int i = offset; i < offset + length; ++i) {
n <<= 8;
n ^= bytes[i] & 255;
}
return n;
}
private byte[] intToByte(int val) {
int offset = 0;
byte[] bytes = new byte[4];
for (int i = offset + 3; i > offset; --i) {
bytes[i] = (byte) val;
val >>>= 8;
}
三鹿奶bytes[offset] = (byte) val;
return bytes;欧姆表
} }