B类地址,斜线记法,192.168.60.1/24其中192.168.10.1是IP字符串strIP,24是子网掩码1的个数nSubnetMas,其中要求18<=nSubnetMas<=30

#include "qdlgiptool.h"
#include "ui_qdlgiptool.h"
#include <QDebug>//
#include <QtMath>//数学函数
#include <QMessageBox>////单击“计算”按钮消息处理函数
void QDlgIPTool::on_btIPToolCal_clicked()
{QString strIP;//IP字符串int nSubnetMask;//子网掩码整数(nSubnet个1)quint64 subnetMaskTotal=0;//子网掩码位nSubnetMask个1用10进制表示quint64 hostTotal=0;//主机位(32-nSubnetMask)个1用10进制表示quint64 temp=0;//临时变量//计算IP===========================================================ui->widgetIP->setFocus();//设置焦点strIP=ui->widgetIP->getIP();//获取IP字符串if(strIP.isEmpty())//判断IP是否为空{QMessageBox::information(this,"消息","请输入IP地址!",QMessageBox::Ok,QMessageBox::NoButton);}else{QStringList strListIP=strIP.split(".");//按照指定的字符分割IP字符串QString strIP1=strListIP[0];QString strIP2=strListIP[1];QString strIP3=strListIP[2];QString strIP4=strListIP[3];//输出分割后的IP字符串//qDebug()<<strIP1;//qDebug()<<strIP2;//qDebug()<<strIP3;//qDebug()<<strIP4;//判断IP地址是否全部输入if(strIP1.isEmpty()||strIP2.isEmpty()||strIP3.isEmpty()||strIP4.isEmpty()){QMessageBox::information(this,"消息","请补全IP地址!",QMessageBox::Ok,QMessageBox::NoButton);}else{uint nIP1=strIP1.toUInt();uint nIP2=strIP2.toUInt();uint nIP3=strIP3.toUInt();uint nIP4=strIP4.toUInt();//qDebug()<<nIP1;//qDebug()<<nIP2;//qDebug()<<nIP3;//qDebug()<<nIP4;//计算子网掩码=================================================nSubnetMask=ui->spinBoxnumSubnetMask->value();//获取子网掩码1的个数//计算出子网掩码位nSubnetMask个1用10进制表示的整数for(int i=0;i<nSubnetMask;i++){temp=1;temp<<=(31-i);subnetMaskTotal|=temp;}//qDebug()<<subnetTotal;//输出子网掩码的10进制数//计算出子网掩码各个段10进制整数uint nSubnetMask1=(subnetMaskTotal&4278190080)>>24;uint nSubnetMask2=(subnetMaskTotal&16711680)>>16;uint nSubnetMask3=(subnetMaskTotal&65280)>>8;uint nSubnetMask4=(subnetMaskTotal&255);//转换出子网掩码各个段10进制整数的字符串形式QString strSubnetMask1=QString::number(nSubnetMask1,10);QString strSubnetMask2=QString::number(nSubnetMask2,10);QString strSubnetMask3=QString::number(nSubnetMask3,10);QString strSubnetMask4=QString::number(nSubnetMask4,10);//整合子网掩码各个段10进制整数的字符串形式QString strSubnetMask=strSubnetMask1+"."+strSubnetMask2+"."+strSubnetMask3+"."+strSubnetMask4;//qDebug()<<strSubnetMask;//输出整合后的子网掩码字符串ui->widgetSubNetMask->setIP(strSubnetMask);//设置子网掩码显示//计算网络号===============================================//计算出网络号各个段10进制整数的字符串形式QString strNet1=QString::number(nIP1&nSubnetMask1,10);QString strNet2=QString::number(nIP2&nSubnetMask2,10);QString strNet3=QString::number(nIP3&nSubnetMask3,10);QString strNet4=QString::number(nIP4&nSubnetMask4,10);//整合网络号各个段10进制整数的字符串形式QString strNet=strNet1+"."+strNet2+"."+strNet3+"."+strNet4;//qDebug()<<strNet;//输出整合后的网络号字符串ui->widgetNetNumber->setIP(strNet);//设置网络号显示//计算第一个可用IP===========================================//计算出第一个可用IP各个段10进制整数的字符串形式QString strFirstValidIP1=QString::number(nIP1&nSubnetMask1,10);QString strFirstValidIP2=QString::number(nIP2&nSubnetMask2,10);QString strFirstValidIP3=QString::number(nIP3&nSubnetMask3,10);QString strFirstValidIP4=QString::number((nIP4&nSubnetMask4)+1,10);//整合第一个可用IP各个段10进制整数的字符串形式QString strFirstValidIP=strFirstValidIP1+"."+strFirstValidIP2+"."+strFirstValidIP3+"."+strFirstValidIP4;//qDebug()<<strFirstValidIP;//输出整合后的第一个可用IP字符串ui->widgetFirstValidIP->setIP(strFirstValidIP);//设置第一个可用IP显示//计算最后一个可用IP===========================================//计算出主机位(32-nSubnet)个1用10进制表示的整数for(int16_t i=0;i<32-nSubnetMask;i++){temp=1;temp<<=i;hostTotal|=temp;}//qDebug()<<hostTotal;//输出主机的10进制数//计算出最后一个可用IP各个段10进制整数的字符串形式temphost1=quint8(hostTotal>>24);QString strGuangBoIP1=QString::number((nIP1&nSubnetMask1)|temphost1,10);temphost2=quint8(hostTotal>>16);QString strGuangBoIP2=QString::number((nIP2&nSubnetMask2)|temphost2,10);quint8 temphost3=quint8(hostTotal>>8);QString strLastValidIP3=QString::number((nIP3&nSubnetMask3)|temphost3,10);quint8 temphost4=quint8(hostTotal&255);QString strLastValidIP4=QString::number(((nIP4&nSubnetMask4)|temphost4)-1,10);//整合最后一个可用IP各个段10进制整数的字符串形式QString strLastValidIP=strLastValidIP1+"."+strLastValidIP2+"."+strLastValidIP3+"."+strLastValidIP4;//qDebug()<<strLastValidIP;//输出整合后的最后一个可用IP字符串ui->widgetLastValidIP->setIP(strLastValidIP);//设置最后一个可用IP显示//计算广播IP===========================================//计算出广播IP各个段10进制整数的字符串形式temphost1=quint8(hostTotal>>24);QString strGuangBoIP1=QString::number((nIP1&nSubnetMask1)|temphost1,10);temphost2=quint8(hostTotal>>16);QString strGuangBoIP2=QString::number((nIP2&nSubnetMask2)|temphost2,10);temphost3=quint8(hostTotal>>8);QString strGuangBoIP3=QString::number((nIP3&nSubnetMask3)|temphost3,10);temphost4=quint8(hostTotal&255);QString strGuangBoIP4=QString::number((nIP4&nSubnetMask4)|temphost4,10);//整合广播IP各个段10进制整数的字符串形式QString strGuangBoIP=strGuangBoIP1+"."+strGuangBoIP2+"."+strGuangBoIP3+"."+strGuangBoIP4;//qDebug()<<strGuangBoIP;//输出整合后的广播IP字符串ui->widgetGuangBoIP->setIP(strGuangBoIP);//设置广播IP显示//计算子网数(适用于B类地址)===========================================double nSubnetNumber=qPow(2,nSubnetMask-16)-2;//计算子网数QString strSubnetNumber=QString::number(nSubnetNumber);ui->lineEditSubnetNumber->setText(strSubnetNumber);//设置子网数显示//计算每个子网主机数===========================================double nHostNumber=qPow(2,32-nSubnetMask)-2;//计算主机数QString strHostNumber=QString::number(nHostNumber);ui->lineEditHostNumber->setText(strHostNumber);//设置主机数显示ui->btIPToolCal->setFocus();//设置焦点}}
}

QT5 C++编写B类IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、子网数、主机数相关推荐

  1. ip地址求网络号、子网掩码、主机数、主机数位数和子网主机地址范围最全详解(含例题)

    求子网的网络号.子网掩码.主机数.主机数位数和子网主机地址范围 首先确定是几类地址,分为A.B.C.D.E类五种,区别方法如下 1.0-127.A类,网络号码范围是0.0.0.0-127.0.0.0 ...

  2. IP地址的分类及各类IP的最大网络数、网络号范围和最大主机数

    一.A类IP的最大网络数.网络号范围和主机数 因为A类IP地址只有8位用于net-id A类IP的net-id中,第一位必须是0 全为0的IP地址不可分配 全为1的网络号127.x.x.x虽然可用,但 ...

  3. 已知网络号求子网掩码c语言,已知ip地址求子网掩码 - 已知ip地址求子网掩码_已知ip地址和子网掩码求网络号、子网号和主机号...

    已知ip地址求子网掩码的方法: 方法一:利用子网数来计算: 1.首先,将子网数目从十进制数转化为二进制数: 2.接着,统计得到的二进制数的位数,设为N: 3.最后,先求出此IP地址对应的地址类别的子网 ...

  4. 八、python编写IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、主机数

    # IP子网掩码转为子网掩码有多少个1的整数,例如:"255.255.255.0"有24个1 def strNetmask2nNetmask(strNetmask: str) -& ...

  5. 编写程序输出所有的“水仙花数”。“水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153是一个“水仙花数”,因为153=1×1×1+3×3×3+5×5×5。

    #include <graphics.h> #include <conio.h> #include<stdio.h> int main() {     int a, ...

  6. 【考前冲刺】计算机三级网络技术之综合题-IP地址计算

    [考前冲刺]计算机三级网络技术之综合题-IP地址计算 二级IP地址计算 [1]地址类别 [2]网络地址 [3]直接广播地址 [4]主机号 [5]可用IP地址 此类型的题目主要分布在综合题的第一题,涉及 ...

  7. 【计算机网络】网络层 : IPv4 地址 ( IP 地址分类 | 特殊 IP 地址 | 私有 IP 地址 | A 类、B 类、C 类 IP 地址网络号主机号数量 )★

    文章目录 一.IP 地址 发展 二.分类 IP 地址 三.特殊 IP 地址 四.私有 IP 地址 五.分类 IP 地址 网络号 主机数 详情 一.IP 地址 发展 IP 地址 发展 : 第一阶段 : ...

  8. 怎样编写测试类测试分支_编写干净的测试-被认为有害的新内容

    怎样编写测试类测试分支 很难为干净的代码找到一个好的定义,因为我们每个人都有自己的单词clean的定义. 但是,有一个似乎是通用的定义: 简洁的代码易于阅读. 这可能会让您感到有些惊讶,但我认为该定义 ...

  9. 怎样编写测试类测试分支_编写干净的测试–从配置开始

    怎样编写测试类测试分支 很难为干净的代码找到一个好的定义,因为我们每个人都有自己的单词clean的定义. 但是,有一个似乎是通用的定义: 简洁的代码易于阅读. 这可能会让您感到有些惊讶,但我认为该定义 ...

最新文章

  1. 通过Windows API 创建窗口的过程理解windows消息机制
  2. [JavaWeb-Bootstrap]Bootstrap响应式布局
  3. eclipse服务器添加项目工程,eclipse创建和发布web项目(示例代码)
  4. [转]如何让DIV固定在页面的某个位置而不随着滚动条随意滚动
  5. 【英语学习】【Level 08】U04 What I love L2 My favorite sport
  6. MATLAB plot画线的颜色设定
  7. win10 android设备,巧用《你的手机》链接Win10电脑和Android手机/iPhone
  8. 管理感悟:一个人的工作效率是不可能提高的
  9. Python写房贷计算器的算法
  10. Vrep学习笔记(二)
  11. 按需使用vue-cli-plugin-element插件
  12. 用Python分析《都挺好》中的人物关系
  13. vb.net如何打包exe安装文件
  14. IDEA好用的插件推荐
  15. 【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;
  16. C/C++描述 LeetCode 周赛 5472. 重新排列字符串
  17. php 数据导出 Excel 表 tp3
  18. exchange邮件队列延迟,一直在未定义中,无法到下一步
  19. Chapter002-FPGA学习之按键控制LED灯和蜂鸣器
  20. 常见函数三部曲之字符串函数

热门文章

  1. 基于github和hexo搭建博客 本地hexo博客搭建
  2. “玲珑杯”线上赛 Round #15 河南专场 F 咸鱼文章
  3. 提高Python运行效率的六个窍门
  4. 初次接触GWT,知识点总括
  5. 转:PHP网站在Linux服务器上安全设置方案
  6. H3C 帧中继初级配置(二)
  7. 2010年寒假学习心得
  8. Hive的使用之控制台
  9. spring专业术语了解
  10. vfp控制excel使用sort_使用Python根据索引合并Excel表