HJ39判断两个IP是否属于同一子网
提示:文章
文章目录
- 前言
- 一、背景
- 二、
- 2.1
- 2.2
- 总结
前言
HJ39判断两个IP是否属于同一子网
一、 代码:
第一版代码没有对掩码网络号进行处理。一开始对非法字段的理解就是value大于255。然后执行示例,
254.255.0.0
85.122.52.249
10.57.28.1171
2
出现错误,增加修改为掩码只能是255和0这两个,跑了下面的代码,还是有示例没有通过。
#include <stdio.h>
#include <stdlib.h>int main() {int a, b;char sonNet[20] = {'\0'};char ip1[20] = {'\0'};char ip2[20] = {'\0'};int arraySonNet[4] = {0};int arrayIp1[4] = {0};int arrayIp2[4] = {0};while (scanf("%s", sonNet) != EOF) { // 注意 while 处理多个 case// 64 位输出请用 printf("%lld") to char output = 'f';char delimiters[2] = ".";char* p = strtok(sonNet, delimiters);int index = 0;while(p != NULL){//printf("%s\n", p);int data = atoi(p);if(data > 255){output = '1';break;}else if(data != 255 && data != 0){output = '1';break;}arraySonNet[index++] = data;p = strtok(NULL, delimiters);}if(scanf("%s", ip1) != EOF){p = strtok(ip1, delimiters);int index = 0;while(p != NULL){//printf("%s\n", p);int data = atoi(p);if(data > 255){output = '1';break;}arrayIp1[index++] = data;p = strtok(NULL, delimiters);}}if(scanf("%s", ip2) != EOF){p = strtok(ip2, delimiters);int index = 0;while(p != NULL){//printf("%s\n", p);int data = atoi(p);if(data > 255){output = '1';break;}arrayIp2[index++] = data;p = strtok(NULL, delimiters);}}int count = 0;for(int i = 0; i < 4; i++){if( (ip1[i] & sonNet[i]) == (ip2[i] & sonNet[i]) ){++count;}}if(output == 'f'){if(count == 4){output = '0';}else {output = '2';}}printf("%c\n", output);}return 0;
}
255.255.252.0
173.225.245.45
69.138.93.2282
1
这个示例没有通过。然后我仔细看了下题目对于掩码非法的说明。其中有这句话:掩码的二进制字符串前缀为网络号,都由‘1’组成;后缀为主机号,都由’0’组成。
这边涉及到掩码的网络号的问题,还需要单独处理一下逻辑。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>bool isTargetSonNet(int array[], int len)
{int tempArray[32] = {0};int tempArrayIndex = 0;for(int i = 0; i < len; i++){int data = array[i];if(data > 255){return false;}int index = ((tempArrayIndex + 1) * 8);while(data){int dat = data % 2;tempArray[--index] = dat;data /= 2;}tempArrayIndex++;}int count = 0;for(int i = 0; i < 32; i++){int temp = tempArray[i] - tempArray[i + 1];if(temp == 1){count++;}}if(count != 1){return false;}return true;
}int main() {int a, b;char sonNet[20] = {'\0'};char ip1[20] = {'\0'};char ip2[20] = {'\0'};int arraySonNet[4] = {0};int arrayIp1[4] = {0};int arrayIp2[4] = {0};while (scanf("%s", sonNet) != EOF) { // 注意 while 处理多个 case// 64 位输出请用 printf("%lld") to char output = 'f';char delimiters[2] = ".";char* p = strtok(sonNet, delimiters);int index = 0;while(p != NULL){//printf("%s\n", p);int data = atoi(p);// if(data > 255)// {// output = '1';// break;// }// else if(data != 255 && data != 0)// {// output = '1';// break;// }arraySonNet[index++] = data;p = strtok(NULL, delimiters);}if(!isTargetSonNet(arraySonNet, 4)){output = '1';}if(scanf("%s", ip1) != EOF){p = strtok(ip1, delimiters);int index = 0;while(p != NULL){//printf("%s\n", p);int data = atoi(p);if(data > 255){output = '1';break;}arrayIp1[index++] = data;p = strtok(NULL, delimiters);}}if(scanf("%s", ip2) != EOF){p = strtok(ip2, delimiters);int index = 0;while(p != NULL){//printf("%s\n", p);int data = atoi(p);if(data > 255){output = '1';break;}arrayIp2[index++] = data;p = strtok(NULL, delimiters);}}int count = 0;for(int i = 0; i < 4; i++){if( (ip1[i] & sonNet[i]) == (ip2[i] & sonNet[i]) ){++count;}}if(output == 'f'){if(count == 4){output = '0';}else {output = '2';}}printf("%c\n", output);}return 0;
}
以为上面的版本会通过,不过下面的示例还是没有通过
1.255.255.0
187.39.235.7
219.79.189.231
1
2
增加对isTargetStr函数的逻辑处理
bool isTargetSonNet(int array[], int len)
{int tempArray[32] = {0};int tempArrayIndex = 0;for(int i = 0; i < len; i++){int data = array[i];if(data > 255){return false;}int index = ((tempArrayIndex + 1) * 8);while(data){int dat = data % 2;tempArray[--index] = dat;data /= 2;}tempArrayIndex++;}int count = 0;for(int i = 0; i < 32; i++){int temp = tempArray[i] - tempArray[i + 1];if(temp != 0 && temp != 1){return false;}if(temp == 1){count++;}}if(count != 1){return false;}return true;
}
还是没有通过全部示例
255.0.0.0
193.194.202.15
232.43.7.592
1
修改isTargetStr函数如下
bool isTargetSonNet(int array[], int len)
{int tempArray[32] = {0};int tempArrayIndex = 0;for(int i = 0; i < len; i++){int data = array[i];if(data > 255){return false;}int index = ((tempArrayIndex + 1) * 8);while(data){int dat = data % 2;tempArray[--index] = dat;data /= 2;}tempArrayIndex++;}int count = 0;for(int i = 0; i + 1 < 32; i++){int temp = tempArray[i] - tempArray[i + 1];if(temp != 0 && temp != 1){return false;}if(temp == 1){count++;}}if(count != 1){return false;}return true;
}
主要是这一行: for(int i = 0; i + 1 < 32; i++)
修改后示例报错
255.255.255.0
167.-79.164.247
158.201.137.1511
2
将isTragetStr函数改成下述形式
bool isTargetSonNet(int array[], int len)
{int tempArray[32] = {0};int tempArrayIndex = 0;for(int i = 0; i < len; i++){int data = array[i];if(data > 255 || data < 0){return false;}int index = ((tempArrayIndex + 1) * 8);while(data){int dat = data % 2;tempArray[--index] = dat;data /= 2;}tempArrayIndex++;}int count = 0;for(int i = 0; i + 1 < 32; i++){int temp = tempArray[i] - tempArray[i + 1];if(temp != 0 && temp != 1){return false;}if(temp == 1){count++;}}if(count != 1){return false;}return true;
}
试了下还是不行,我才意识到可能是因为atoi的原因。
我用的atoi函数,可以转成有符号数吗?这边要处理一下。
2、总结
接下文:HJ39判断两个IP是否属于同一子网(中)
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
HJ39判断两个IP是否属于同一子网
提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 HJ39判断两个IP是否属于同一子网 一、 代码: 第一版代码没有对掩码网络号进行处理。一开始对非法字段的理解就是value大于255。然后执行示例, 254.255.0.0 85.122.52.249 10.57.…...
![](https://img-blog.csdnimg.cn/direct/bcab393ba4924c0b8ca4f6d761f5dd62.png)
opencv学习笔记(2)
设置鼠标回调函数 setMouseCallback(winname, callback, userdata) winname:窗口名字 callback:回调函数 userdata:传回callback中 callback(event, x, y, flags,userdata) event:鼠标事件 x: 鼠标的x坐标 y: 鼠标的y坐标 flags:鼠标键和组合键 userdata:setMouseCallback传回…...
![](https://img-blog.csdnimg.cn/img_convert/d5ee4db9fa15501720e5321802f0f5fd.png)
分享vs code十大好用的插件
1.Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 将 VS Code 界面改成简体中文。 2.PDF Viewer 在VS Code 中打开 PDF文件。 3.TODO Highlight 这个扩展会突出显示您的待办事项注释,并提醒存在未完成的注释或任务。 该扩展附带了内…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL支持哪些特殊字符
MySQL支持多种特殊字符,这些字符在SQL语句中具有特定的含义,需要在使用时特别注意。以下是一些MySQL中的特殊字符及其相关信息: 引号: 单引号():用于定义字符串。如果字符串中包含单引号本身&…...
![](https://www.ngui.cc/images/no-images.jpg)
c语言中的宏是什么?
宏的定义及用途 C语言中的宏是一种预处理指令,它允许程序员定义一个名称,该名称可以代表一段代码或一个值。宏的主要用途是简化代码的编写,提高代码的可读性和可维护性,以及实现代码的重复利用。 宏的定义使用#define指令&#…...
![](https://img-blog.csdnimg.cn/direct/06a39458279d47de80a0e5190cf982d5.png)
采购信息记录标准编码范围维护以及如何开发获取编码范围
上图是配置的点,在这里可以获取到对应的编号范围以及对象名称 下面的话是官方就如何取编号的技术文档 SAP Help Portal...
![](https://img-blog.csdnimg.cn/direct/657d63134daf4ba092fd8cb8896f97af.png)
渗透测试基础(四) MS08-067 漏洞攻击
1. 漏洞介绍 漏洞描述 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞Windows的Server服务在处理特质RPC请求时存在缓冲区溢出漏洞,远程攻击者可以通过发送恶意的RPC请求触发这个溢出,导致完全入侵用户系统,以SYSTEM权限执行任意指令。…...
![](https://www.ngui.cc/images/no-images.jpg)
vmware 虚拟机保留数据扩展C盘
1,在默认安装系统的时候,VMWARE一般给C盘50G,很多人想着够用了,但是后面慢慢的安装各种大型软件,游戏,才发现,悔时已晚。 2,有很多人虚拟机其实就是拿来游戏多开,但是当…...
![](https://img-blog.csdnimg.cn/direct/efc9d9bb13a040ee8457c640bb1ad0d9.png)
vscode cmake c++ include 设置
在这里设置编译器路径,include路径等等。 一个奇怪的现象是同一项目放在VS中可以cmake生成,并正常运行,但是放在VSCODE中cmake生成时会报错,如iostream、limits等头文件找不到。当在VS中运行执行完成调试后,在运行VSC…...
![](https://www.ngui.cc/images/no-images.jpg)
2024-06-19 高等数学(统计学和概率论-高等工科数学)
学习数学时,有效的笔记方法可以帮助你更好地理解和记忆概念、公式和解题技巧。下面是一个数学笔记的基本模本,你可以根据自己的需求进行调整: 1. **标题**:写上日期和课程名称,例如“2024-06-19 高等数学”。 2. **课…...
![](https://img-blog.csdnimg.cn/direct/3d2eadfd77be4e0ca34d1be9f7bf4fcf.png)
idea 创建properties文件,解决乱码
设置properties文件编码 点击file->Settings File Encodings->设置utf-8 重新创建.properties文件才生效...
![](https://img-blog.csdnimg.cn/direct/1049ede8b70a49f3baef3a1177bd148c.png)
树莓派4B学习笔记11:PC端网线SSH连接树莓派_网线连接请求超时问题解决
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习使用网线连接树莓派,网线可以提供更…...
![](https://img-blog.csdnimg.cn/img_convert/6366465bf54f4070f8e726e31367e167.jpeg)
适合营销的叙事可视化
背景 数据可视化与数据故事化的差异和相似点,以及它们如何协同工作,将你的数据转化为清晰、简洁、可操作的信息,以便您的组织使用。 什么是数据可视化? 数据可视化通过图像传达信息——这是你所收集数据的视觉表示。通过提供原…...
![](https://img-blog.csdnimg.cn/direct/b151e065ebd54c43b90602e295b84028.png)
Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】
0.零基础入门微服务实战课 1.微服务和 Spring Cloud1.1 什么是微服务?1.2 什么是 Spring Cloud?1.3 微服务 VS Spring Cloud 2.为什么要学微服务?3.Spring Cloud 组件介绍1.什么是 Nacos?1.1 Nacos 功能1.1.1 配置中心1.1.2 注册中心 1.2 Na…...
![](https://www.ngui.cc/images/no-images.jpg)
GPRS与4G网络:技术差异与应用选择
在移动通信的发展历程中,GPRS(General Packet Radio Service)和4G(Fourth-Generation)技术都扮演着举足轻重的角色。虽然两者都旨在提供无线数据传输服务,但在数据传输速率、延迟和覆盖范围等方面ÿ…...
![](https://img-blog.csdnimg.cn/img_convert/92426504e1423417aa76a09c7616f9e2.gif)
【Spring】1. Maven项目管理
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...
![](https://img-blog.csdnimg.cn/img_convert/5c13a9935e58220f993900ca2e834c34.jpeg)
工业制造领涉及的8大常见管理系统,如mes、scada、aps、wms等
在工业生产和制造领域有一些常见的管理系统,很多小伙伴分不清,这次大美B端工场带领大家了解清楚。 MES(Manufacturing Execution System,制造执行系统): MES是一种用于监控、控制和优化生产过程的软件系统…...
![](https://www.ngui.cc/images/no-images.jpg)
Lianwei 安全周报|2024.06.17
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 IDC:2024 第一季度中国安全硬件市场规模…...
![](https://img-blog.csdnimg.cn/img_convert/edb2341909e3ec9406ea3c6284ee183e.webp?x-oss-process=image/format,png)
海量数据处理利器 Roaring BitMap 原理介绍
作者:来自 vivo 互联网服务器团队- Zheng Rui 本文结合个人理解梳理了BitMap及Roaring BitMap的原理及使用,分别主要介绍了Roaring BitMap的存储方式及三种container类型及Java中Roaring BitMap相关API使用。 一、引言 在进行大数据开发时,…...
![](https://img-blog.csdnimg.cn/direct/0acd1a6e229c4209891179ba4e5d9f89.png#pic_center)
Javaweb登录校验
登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景:当我们想要访问一个网站时&am…...
![](https://img-blog.csdnimg.cn/img_convert/8de7fbe696bee373a5c6f1a10b4e5ef2.webp?x-oss-process=image/format,png)
vxe-table 列表过滤踩坑_vxe-table筛选
但是这个过滤输入值必须是跟列表的值必须一致才能查到,没做到模糊查询的功能,根据关键字来过滤并没有实现。 下面提供一下具体实现方法:(关键字来过滤) filterNameMethod({ option, row }) {if (row.name.indexOf(op…...
![](https://img-blog.csdnimg.cn/direct/d4c455a5cd2c4995bb38e00bb97a73cc.png)
计算机网络:网络层 - IP数据报的转发
计算机网络:网络层 - IP数据报的转发 基于终点转发最长前缀匹配二叉线索树路由表特殊路由特定主机路由默认路由 IP多播 基于终点转发 路由器转发报文时,是通过报文中的目的地址字段来转发的,也即是说路由器只知道终点的IP地址,根…...
![](https://img-blog.csdnimg.cn/direct/a1a5540a6e934587a64cbbb629880964.png)
颠覆与创新:探寻Facebook未来的发展路径
Facebook,这个曾经引领社交网络革命的巨头,在如今竞争激烈的科技市场中,正面临着前所未有的挑战和机遇。如何在不断变化的数字世界中保持竞争力,成为业界领先者,这是摆在Facebook面前的重要课题。本文将探寻Facebook未…...
![](https://img-blog.csdnimg.cn/img_convert/7d09684eb820c5706c0bf58ef8991e99.png)
太湖远大毛利率下滑:研发费用率远低同行,募投项目合理性疑点重重
《港湾商业观察》黄懿 6月20日,浙江太湖远大新材料股份有限公司(以下简称“太湖远大”,873743.NQ)即将迎来过会。 2023年11月30日,太湖远大所提交的上市申请材料正式获北交所受理,保荐机构为招商证券&…...
![](https://www.ngui.cc/images/no-images.jpg)
赶紧收藏!2024 年最常见 20道设计模式面试题(八)
上一篇地址:赶紧收藏!2024 年最常见 20道设计模式面试题(七)-CSDN博客 十五、模板方法模式是如何在父类中定义算法框架的? 模板方法模式通过在父类(通常是一个抽象类)中定义算法的骨架&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
JAVA学习-练习试用Java实现“比较版本号”
问题: 给定两个版本号 version1 和 version2 ,请比较它们。 版本号由一个或多个修订号组成,各修订号由一个 . 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,…...
![](https://www.ngui.cc/images/no-images.jpg)
云原生分级SLA
云原生分级SLA(Service Level Agreement,服务等级协议)规则是为了确保云服务提供商和客户之间对服务性能、可用性和其他关键指标有明确的理解和期望。这些规则通常基于业务需求和技术实现来制定,并根据服务的不同级别进行分级。以…...
![](https://www.ngui.cc/images/no-images.jpg)
java干货 线程间通信
文章目录 一、线程间通信1.1 为什么要处理线程间通信?1.2 什么是等待唤醒机制? 二、等待唤醒机制使用2.1 等待唤醒机制用到的方法2.1.1 wait2.1.2 notify 2.2 线程通信代码实践2.2.1 重要说明2.2.2 代码 一、线程间通信 1.1 为什么要处理线程间通信&…...
![](https://img-blog.csdnimg.cn/direct/968cce9ae85b492eb3127ee172f1c26d.png)
【人机交互 复习】第6章 交互式系统的设计
一、设计框架 1.在建立了一组需求之后,设计即将开始,建议采取自上面下的方式,首先把重点放在大的方面,生成低保真且不包含具体细节的方案,一般通过写剧本来确定交互设计模式与逻辑。 2.设计框架: 先站在一个…...
![](https://img-blog.csdnimg.cn/direct/ae56b702c2a74042b708c13e7082eeb5.png)
1-函数极限与连续
1 2 平方项没有考虑到(其正负)...
![](https://www.136.la/skin/m03sred/image/lazy.gif)
专业建站流程/营销模式和营销策略
最近学习51单片机,使用Keil进行汇编编写代码时很多关键字没有高亮显示很不习惯,本身Keil鼠标选择字段操作就让人很无语,因此编辑ASM汇编文件都是用自己比较喜欢的EditPlus。EditPlus支持强大的、可自定义的语法高亮功能,可以创建自…...
![](https://img-blog.csdnimg.cn/img_convert/88d8304a5ad6ec450024a3877248988c.png)
如何建立网站自己做站长/网站提交入口大全
软件测试是确保软件质量的可靠手段,是软件开发过程中必不可少的重要环节。本文提出了面向复用的测试用例设计过程,为测试用例复用提供了实现策略。测试用例的复用对于缩短软件开发周期和降低软件开发成本具有极其重要的意义。 1、引言 随着软件工程领域的…...
![](/images/no-images.jpg)
一级a做爰片免费网站孕交视频教程/2023年8月新闻热点事件
numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中。 class numpy.matrix(data,dtype,copy):返回一…...
![](https://img-blog.csdnimg.cn/img_convert/f987a6b92e2ee9986a5aa3b0d03b0161.png)
长春建站的费用/百度竞价网站
什么是MybatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包…...
![](/images/no-images.jpg)
网站 虚拟目录/网络营销网站有哪些
参照我原来的文章打包上传pypi包时报错: Python编程:为世界贡献你的轮子-pipy打包 error: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)> 看到网上说此方法已经不支持 需要用 twine 模块打包 参考…...
起重机网站怎么做/微信营销的特点
目前,我国已成为全球最大的驾驶培训市场,根据前瞻产业研究院发布相关报告预测,2017年我国机动车驾驶人数量将达到3.95亿人。2017年较上年新增驾驶人数量约3100万人。以人均学车价格5000元来计算,至2017年,我国机动车驾…...