C#窗体(winform)实现IP地址和其子网掩码的按位与运算并输出结果

先看看最终的效果:

以下是代码部分的展示,写了详细的说明;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace IpAdress_AND_operation
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //分别将两个textbox的信息提取出来,存放在字符串变量str1和str2中
            string str1 = textBox1.Text;
            string str2 = textBox2.Text;
            string RESULT = "";//声明一个字符串变量用来存放最终的结果
            char[] separators = { '.' };//一个可选的参数,是一个字符数组,包含用于拆分字符串的分隔符
            //将str1和str2拆分后分别存放到字符串数组strarr1和strarr2中等待下一步处理
            string[] strarr1 = str1.Split(separators);
            string[] strarr2 = str2.Split(separators);
            int flag = 0;//这个flag用于对小数点输出次数的计数
            for (int i = 0; i < strarr1.Length; i++)
            {
                //将字符串数组中的值转化为八位二进制便于下一步的按位逻辑运算
                strarr1[i] = Convert.ToString(Convert.ToInt64(strarr1[i]) , 2).PadLeft(8, '0');
                strarr2[i] = Convert.ToString(Convert.ToInt64(strarr2[i]) , 2).PadLeft(8, '0');
                //通过八次循环对八组二进制数进行与运算
                for(int j = 0; j < 8; j++)
                {
                    int x = int.Parse(strarr1[i][j].ToString()) & int.Parse(strarr2[i][j].ToString());
                    RESULT += x;
                }
                if (flag < 3)
                {
                    RESULT += '.';
                    flag += 1;
                }
            }   
            //最后将结果输出
            textBox3.Text = RESULT.ToString();
        }
    }
}

遇到的问题和解决方法:

使用 ToInt() 函数将string转化为整型的时候有可能会转化为ASCII码的值,我在编写过程中一直会把字符0和1转化为48和49,只要用int.Parse() 函数来规避这个问题;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值