1. 程式人生 > >c# 檢測一串字串是否為子網掩碼

c# 檢測一串字串是否為子網掩碼

        static bool ifMask(string yanma)
        {
            //11111 0000  是否分割 標誌位
            bool zero = false;
            //分割成四段
            string[] ip_4 = yanma.Split('.');
            if (ip_4.Length != 4) return false;
            for (int i = 0; i < 4; i++)
            {
                //如果是255
                if (ip_4[i].Equals("255"))
                {
                    if (zero) return false;
                }
                //其它網段 前面全為1 後面全為0
                else if (ip_4[i].Equals("128") ||
                         ip_4[i].Equals("192") || ip_4[i].Equals("224") ||
                         ip_4[i].Equals("240") || ip_4[i].Equals("248") ||
                         ip_4[i].Equals("252") || ip_4[i].Equals("254"))
                {
                    //標誌位為1 後面應該全為0 退出 掩碼格式錯誤
                    if (zero) return false;
                    zero = true;
                }
                //全是0
                else if (ip_4[i].Equals("0") || ip_4[i].Equals("00") || ip_4[i].Equals("000"))
                {
                    //還沒有分割 則標誌位為1 分割 1 0
                    if (!zero) zero = true;
                }
                //其它數字或者字元
                else return false;
            }
            //全部檢查完畢 無錯誤 
            return true;
        }