万金流
以码会友。 吾Q:578751655。 水平有限,轻喷,谢!
随笔 - 189,  文章 - 0,  评论 - 7,  阅读 - 14万

如题,纯练手,意义不大。

代码:

复制代码
static void Main(string[] args)
        {
            string ip1, ip2;
            string[] ip1s, ip2s;
            int[] int_ip1s = new int[4], int_ip2s = new int[4];
            int step = 256, t, i;
            bool flag;
            Console.WriteLine("起始ip:");
            ip1 = Console.ReadLine();
            Console.WriteLine("终止ip:");
            ip2 = Console.ReadLine();
            ip1s = ip1.Split('.');
            ip2s = ip2.Split('.');
            for (i = 0; i < 4; i++)
            {
                int_ip1s[i] = int.Parse(ip1s[i]);
                int_ip2s[i] = int.Parse(ip2s[i]);
            }
            do
            {
                flag = false;
                Console.WriteLine($"{int_ip1s[0]}.{int_ip1s[1]}.{int_ip1s[2]}.{int_ip1s[3]}");
                t = int_ip1s[3] + 1;
                i = 3;
                while (i > 0)
                {
                    int_ip1s[i--] = t % step;
                    int_ip1s[i] += t / step;
                    t = int_ip1s[i];
                }
                for (i = 0; i < 4; i++)
                {
                    if (int_ip1s[i] != int_ip2s[i])
                    {
                        flag = true;
                        break;
                    }
                }
            } while (flag);
            Console.WriteLine($"{int_ip1s[0]}.{int_ip1s[1]}.{int_ip1s[2]}.{int_ip1s[3]}");
            Console.WriteLine("ok");
            Console.ReadKey();
        }
复制代码

效果:

 网络上有另外的代码,也提供了不错的思路:

引自https://www.cnblogs.com/luxiaoxun/p/3376682.html,感谢作者!

复制代码
public static long IpToInt(string ip)
        {
            char[] separator = new char[] { '.' };
            string[] items = ip.Split(separator);
            return long.Parse(items[0]) << 24
                    | long.Parse(items[1]) << 16
                    | long.Parse(items[2]) << 8
                    | long.Parse(items[3]);
        }
        public static string IntToIp(long ipInt)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append((ipInt >> 24) & 0xFF).Append(".");
            sb.Append((ipInt >> 16) & 0xFF).Append(".");
            sb.Append((ipInt >> 8) & 0xFF).Append(".");
            sb.Append(ipInt & 0xFF);
            return sb.ToString();
        }
复制代码

ip转换成整数,就可以利用条件判断,逐次加一完成操作了。

对位运算不熟悉的同学,也可以用乘(左移)除(右移)、取余(与)来完成。

posted on   万金流  阅读(414)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

点击右上角即可分享
微信分享提示