Java实现已知IP地址和子网掩码获取网络号和主机号

根据IP地址和子网掩码计算网段的方法 IP地址是一个32位的二进制数字,通常用四个8位的十进制数表示,每个十进制数之间使用句点分隔。子网掩码也是32位的二进制数字,它用于指示IP地址中哪些位用于网络前缀,哪些位用于主机标识。如果你想编写一个Python程序来根据给定的IP地址和子网掩码计算网段,下面是一个详细的解释和示例代码。通过将IP地址和子网掩码进行逻辑与操作,我们可以提取出网络前缀部分,从而确定特定主机所在的网段。然后,它使用逻辑与操作符。下面是一个Python函数,该函数接受IP地址和子网掩码作为输入,并返回计算得到的网段。 阅读详情

这段代码有很多需要优化的地方,小编是为了完成标题的功能才写的所以没有做过多的优化,望大家见谅!

​
package com.lanqiao;

import java.util.Scanner;

/*
 * 已知IP地址和子网掩码来获得对应的网络号和主机号
 */
public class Lm1 {
	//ip和子网掩码的实现类:如ip:192.168.43.169   子网掩码:255.255.255.0
	static class  dz{
		int ip1;//192或255
		int ip2;//168或255
		int ip3;//43或255
		int ip4;//169或0
		public int getIp1() {
			return ip1;
		}
		public void setIp1(int ip1) {
			this.ip1 = ip1;
		}
		public int getIp2() {
			return ip2;
		}
		public void setIp2(int ip2) {
			this.ip2 = ip2;
		}
		public int getIp3() {
			return ip3;
		}
		public void setIp3(int ip3) {
			this.ip3 = ip3;
		}
		public int getIp4() {
			return ip4;
		}
		public void setIp4(int ip4) {
			this.ip4 = ip4;
		}
		
	}
	public static int int_byte1(int n,int m) {
		byte[] b1=new byte[8];//ip地址的二进制
		byte[] b2=new byte[8];//子网掩码的二进制
		byte[] b3=new byte[8];//网络号的二进制
		int a=0;
		//将ip地址转化成二进制
		for(int i=b1.length-1;i>=0;i--) {
			b1[i]=(byte) (n%2);
			n=n/2;
		}
		//将子网掩码转换成二进制
		for(int i=b2.length-1;i>=0;i--) {
			b2[i]=(byte) (m%2);
			m=m/2;
		}
		//网络号的二进制
		for(int i=0;i<8;i++) {
			b3[i]=(byte) (b1[i]&b2[i]);
		}
		//网络号的十进制
		for(int i=7;i>=0;i--) {
			a+=(int)b3[i]*(int)Math.pow(2, 7-i);
		}
		return a;
	}
	
	public static int int_byte2(int n,int m) {
		byte[] b1=new byte[8];//ip地址的二进制
		byte[] b2=new byte[8];//子网掩码的二进制
		byte[] b3=new byte[8];//网络号的二进制
		byte[] b4=new byte[8];//子网掩码的二进制取反
		int a=0;
		//将ip地址转化成二进制
		for(int i=b1.length-1;i>=0;i--) {
			b1[i]=(byte) (n%2);
			n=n/2;
		}
		//将子网掩码转换成二进制
		for(int i=b2.length-1;i>=0;i--) {
			b2[i]=(byte) (m%2);
			m=m/2;
		}
		
		//将子网掩码的二进制取反
		for(int i=0;i<b2.length;i++) {
			if(b2[i]==1)
				b4[i]=0;
			if(b2[i]==0)
				b4[i]=1;
		}
		//主机号的二进制
		for(int i=0;i<8;i++) {
			b3[i]=(byte) (b1[i]&b4[i]);
		}
		//网络号的十进制
		for(int i=7;i>=0;i--) {
			a+=(int)b3[i]*(int)Math.pow(2, 7-i);
		}
		return a;
	}
	public static void main(String[] args) {
		dz dz1=new dz();
		dz dz2=new dz();
		Scanner scanner=new Scanner(System.in);
		String string1=scanner.nextLine();
		String string2=scanner.nextLine();
		//需要注意的是,该方法的参数是个正则表达式,要注意对某些字符做转码。
		//例如,.在正则表达式中表示任意字符,因此,如果你要通过.号做分割,需要这样写,split("\\.")
		//或者split(Pattern.quote("."))
		String ip1[]=string1.split("\\.");
		if(ip1!=null && ip1.length==4) {
			dz1.setIp1(Integer.parseInt(ip1[0]));
			dz1.setIp2(Integer.parseInt(ip1[1]));
			dz1.setIp3(Integer.parseInt(ip1[2]));
			dz1.setIp4(Integer.parseInt(ip1[3]));
		}
		
		String ip2[]=string2.split("\\.");
		if(ip2!=null && ip2.length==4) {
			dz2.setIp1(Integer.parseInt(ip2[0]));
			dz2.setIp2(Integer.parseInt(ip2[1]));
			dz2.setIp3(Integer.parseInt(ip2[2]));
			dz2.setIp4(Integer.parseInt(ip2[3]));
		}
		//219.224.3.18 & 255.255.255.248
		System.out.println("网络号:"+
				int_byte1(dz1.getIp1(),dz2.getIp1())+"."+
				int_byte1(dz1.getIp2(),dz2.getIp2())+"."+
				int_byte1(dz1.getIp3(),dz2.getIp3())+"."+
				int_byte1(dz1.getIp4(),dz2.getIp4())
				);
		System.out.println("主机号:"+
				int_byte2(dz1.getIp1(),dz2.getIp1())+"."+
				int_byte2(dz1.getIp2(),dz2.getIp2())+"."+
				int_byte2(dz1.getIp3(),dz2.getIp3())+"."+
				int_byte2(dz1.getIp4(),dz2.getIp4())
				);
		
	}
}

​

 

java获取Centos7服务器网卡ip 子网掩码 默认网关 DNS 同时设置网卡 及 重启网卡参考 立即下载

相关推荐

IpRangeUtil;java 校验Ip段(子网掩码)

IpRangeUtil;java 校验Ip段(子网掩码); 支持 iptables.patterns=10.0.0.0/8,192.168.0.0/16,172.16.0.0/12,202.195.129.240/28,202.195.128.0/20

根据IP地址和子网掩码位数计算网段(Java实现)

1、场景 现已知IP地址及其子网掩码的位数,例如: 192.168.10.41/29 计算此IP所在的网段(192.168.10.40/29) 2、实现思路 根据计算机网络的知识,首先可以根据掩码位数知道需要保留的ip位数(掩码位数/8就是要ip地址和网段地址一样的部分),之后根据掩码位数/8的余数,可以计算出非保留部分的具体网段数字(先将其变为二进制再操作,涉及到十进制和二进制的转换和左移操作。具体参照代码实现) 3、代码实现(Java) private static String caculat

qq_41065770的博客 5082

你不知道的Postman的Mock接口测试,看这一篇就够了

创建Mock服务你可以从Postman已有的测试集(Collection)中创建Mock Server或者直接创建Mock Server(我们这里选择从已有的测试集中创建Mock Server)Mock server详细配置页面,在此页面中我们可以设置:命名Mock Server选择一个环境(可选的),我们可以选择之前设置过的环境,Mock Server将会使用对应环境中设置过的变量在对应的请求和响应中如果想要将Mock Server设置私有访问的,那么可以勾选此选项,不勾选则对所有人可见。

654

Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算网段(IPV4和IPV6)

Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算网段(IPV4和IPV6)

qq_41936784的博客 5125

计算机组成原理课程设计_微程序控制的简单模型机设计

微程序控制的简单模型机设计 要求 基本要求 完成一个简单主机的设计,模型机应具备如下能力:在自行设计的指令集基础上,运行自行编写的简单用户程序,实现特定运算功能。 弹性要求 在此基础上,完成必要的扩展,实现模型机的功能扩展设计,包括:实现多种运算功能(指令集的扩充)、支持更为丰富的寻址方式、有更为完善的微程序设计等。 实验软件和硬件环境 QuartusII, FPGA计算机组...

sailist的记录站 3万+

汽车软件工程师必看:ASPICE开发流程全解析(附各阶段交付物清单)

本文全面解析了汽车行业广泛采用的ASPICE开发流程,详细介绍了从需求挖掘到系统架构设计、软件工程及测试验证各阶段的关键操作和交付物清单。针对汽车软件工程师,提供了实用的协作指南和工具推荐,帮助团队提升开发效率并降低项目风险,是掌握ASPICE标准的必备指南。

weixin_30733003的博客 638

通过IP和子网掩码计算设备是不是在同一网段

1. 假设有两个设备 A 和 B,它们分别具有 IP 地址 A.IP 和 B.IP,子网掩码 A.Mask 和 B.Mask。3. 将 IP 地址和子网掩码进行按位与操作。A.IP & A.Mask = B.IP & B.Mask,它们相同。4. 比较结果,如果两个设备的按位与结果相同,则它们在同一个网络中。4. 比较两个设备的按位与结果,如果相同,则它们在同一个网络中。2. 将 IP 地址和子网掩码转换为二进制表示。3. 对 IP 地址和子网掩码进行按位与操作。1. 获取设备的 IP 地址和子网掩码。

dzdesigned的专栏 1134

PCL 读取和保存点云

PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

纵马踏花向自由 1737

根据子网掩码+网关计算网段

网段计算。

勿忘初心 2359

【网络安全】零基础入门网络安全劝退指北

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一起探讨学习。 如何入门 简单了解网络安全 网络安全就是指的确保网络系统中的数据不被别人破坏,而网安工程师就是涉及程序来维护网络安全。 网安方向有很多职位,比如安全产品工程师,安全分析师,数据恢复工程师,网络架构工程师,安全编程工程师,以及网络集成工程师等。 工作内容主要包括: 安全评测,风

互联网老辛 4583

Cesium 相机操作

Cesium 提供了三种方式对相机的位置进行摆放。

虎康的博客 2588

子网掩码、广播地址、DNS和网关

本文关键字:子网掩码、广播地址、DNS、网关。114.114.114.114:国内移动、电信、联通通用的DNS。115.159.157.26:阿里公共DNS。8.8.8.8:谷歌公司提供的DNS,全球通用。

微光点亮星辰 1万+

YOLOv13安装教程 手把手教你融合空间注意力机制(SAB)的RAB卷积模块 自动“聚焦”重要的特征 map指标提升8.96,准确率提升3.56

本文提出了一种改进的YOLOv13目标检测模型,通过引入RAB(残差注意力模块)显著提升了检测性能。实验结果显示,添加RAB模块后,mAP指标提升了8.96,准确率提高了3.56%。文章详细介绍了RAB模块的实现方法:1)采用多级残差连接增强特征提取能力;2)结合空间注意力机制(SAB)自动聚焦关键区域;3)通过1×1卷积实现通道维度压缩与恢复。同时提供了完整的模型移植方案,包括配置文件修改、任务处理代码调整以及模块实现细节,为YOLO系列模型的性能优化提供了有效参考。

FJN110的博客 646

判断内网IP是否为同一个子网

CIDR(Classless Inter-Domain Routing)是互联网中一种新的寻址方式,与传统的A类、B类和C类寻址模式相比,CIDR在IP地址分配方面更为高效。其中/8表示8位网络ID,即32位二进制地址中前8位是固定不变的,对应网段为:00001010.00000000.00000000.00000000。00011111.11111111,可以得出前19位(8*2+3)是固定不变的,则换算为CIDR格式后,表示为:192.168.0.0/19。判断两个IP地址是否在同一个网段,将它们的。

laker的博客 2075

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ipv6的127位掩码如何表示_IP分类和子网掩码有关计算

IP地址1、IP地址基本概念IP地址在网络层将不同的物理网络地址统一到了全球唯一的IP地址上(屏蔽物理网络差异),是唯一标识互联网上计算机的逻辑地址(相当于手机号码,可以通过唯一的手机号码找到手机),所以IP地址也被称为互联网地址(可见其重要性)。2、IP地址格式我们目前常用的IPv4中规定,IP地址长度为32位二进制,在表示时,一般将32位地址拆分为4个8位二进制,再转为4个十进制...

weixin_39528467的博客 4724

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IP地址分类(A类 B类 C类 D类 E类)

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

2401_85111576的博客 1400

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JavaEE-一文了解IP协议与IP地址

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)例如:00111001.11001001.00110001.00110010通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式.例如我的ip地址为10.13.81.107IP协议目前有两种 IPv4与IPv6 ,现在一般默认情况下☞的都是IPv4,轻松了解IP地址中的NAT机制了解其中利弊.

st200112266的博客 867

判断ip地址是否属于同一网段python_判断两个IP地址是不是属于同一子网的方法...

一个IP地址有三种写法:第一种,单个IP,如192.168.55.28第二种,IP/子网掩码,如192.168.55.28/255.255.255.0第三种,IP/子网掩码长度,如192.168.55.28/24对于第一种单个IP的形式,其实际相当于192.168.55.28/32或192.168.55.28/255.255.255.255。下面说明如何判断两个IP是否属于同一子网。这里定义两个方...

weixin_39861054的博客 1722

Java学习 - 网络IP地址与子网划分 讲解

C类:192.168.0.0/255.255.255.0 - 192.168.255.0/255.255.255.0。B类:172.16.0.0/255.255.0.0 - 172.31.0.0/255.255.0.0。内网地址访问 Internet 需要 NAT/PAT 技术。A类:10.0.0.0/255.0.0.0。其中6表示子网掩码的前6位是1,其他为0。一个无分类编制的IP地址为。NAT:网络地址转换。PAT:端口地址转换。

paofuluolijiang的博客 958

javaEE 初阶 — 网络层 IP 协议 的功能 — 路由选择与地址管理

IP 协议的路由选择、IP 协议的地址管理、网络号与主机号的分界、特殊 IP

超烦豆先森 591

IP地址分类(A类 B类 C类 D类 E类

地址范围:1.0.0.0-126.255.255.255 (这种写法是把全0全1都算进去了,其它几类类似)2.主机号 host-id,它标志该主机(或路由器),主机地址表示其属于该网络中的哪一台主机。两级的 IP 地址可以记为: IP 地址 ::= { , }前2个字节(16位)为网络号,后2个字节(16位)为主机号。前1个字节(8位)为网络号,后3个字节(24位)为主机号。简而言之就是:IP地址 = 网络号+主机号。最大网络数: 126个。IP地址 = 网络号+主机号。

m0_55030688的博客 1122

IP地址子网划分

A类IP段 1.0.0.0 到126.255.255.255 (0段和127段不使用)B类IP段 128.0.0.0 到191.255.255.255C类IP段 192.0.0.0 到223.255.255.255XP默认分配的子网掩码每段只有255或0A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1658万多台电脑B类的默认子网掩码 255.255.0.0 一个子网最多可以容纳6万...

qq_38791024的博客 284

【网络原理】IP协议

本期讲解:IP协议的组成、分类,IP地址管理和路由选择。

我的主页 1051

Java中判断一个IP地址是否在一个网段内

要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网。

陈延伟 1万+

切分网络的“蛋糕”:子网掩码与 CIDR——你的 /24 和 /16 到底差在哪?

摘要:文章解析了IP地址中的子网掩码和CIDR表示法(如/24、/16)的作用,它们决定了网络号和主机号的划分,影响设备间的通信。通过实例(192.168.1.100/24)演示了广播地址的计算方法,并强调错误配置会导致服务无法访问。结合实际开发场景(如SpringBoot的server.address配置、Docker网段规划),指出合理选择子网掩码的重要性(避免广播风暴)。最后提出思考题,引导读者计算/23子网的IP范围和广播地址,巩固理解。核心结论:子网掩码是网络通信的关键,配置错误将导致跨子网通信失

2503_93374004的博客 249
上一篇: 一键批处理统一文件名
下一篇: java实现美图秀秀的照片拼接功能(照片数量任意)
记录bug的人
博客等级 码龄9年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值