当前位置: 移动技术网 > IT编程>开发语言>c# > C# 判断是不是合法的16进制字符串

C# 判断是不是合法的16进制字符串

2019年09月19日  | 移动技术网IT编程  | 我要评论

方法一:用正则表达式判断,代码如下:

public const string pattern = @"([^a-fa-f0-9]|\s+?)+";
        /// <summary>
        /// 判断十六进制字符串hex是否正确
        /// </summary>
        /// <param name="hex">十六进制字符串</param>
        /// <returns>true:不正确,false:正确</returns>
        public bool isillegalhexadecimal(string hex)
        {
            return system.text.regularexpressions.regex.ismatch(hex, pattern);
        }

   线性遍历输入的十六进制字符串中是否包含非十六进制字符,代码如下:方法二:

 public ilist<char> hexset = new list<char>() 
        { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','a','b','c','d','e','f' };       
        /// <summary>
        /// 判断十六进制字符串hex是否正确
        /// </summary>
        /// <param name="hex">十六进制字符串</param>
        /// <returns>true:不正确,false:正确</returns>
        public bool isillegalhexadecimal(string hex)
        {
            foreach (char item in hex)
            {
                if (!hexset.contains<char>(item))
                    return true;
            }
            return false;
        }

通过调用上述方法就可以清楚的知道输入的十六进制字符是否正确,然后为程序的下一个工作提供条件。

还有一种方法性能比较慢 就放到文章最后面了

/// <summary>
        /// 判断是否为合法的16进制字符串
        /// </summary>
        /// <param name="hexstring"></param>
        /// <returns></returns>
        public bool ishexadecimal(string hexstring)
        {
            try
            {
                hexstring = hexstring.replace(" ", "").replace("\r", "").replace("\n", "");
                if ((hexstring.length % 2) != 0)
                    hexstring += " ";
                byte[] returnbytes = new byte[hexstring.length / 2];
                for (int i = 0; i < returnbytes.length; i++)
                    returnbytes[i] = convert.tobyte(hexstring.substring(i * 2, 2), 16);
            }
            catch
            {
                return false;
            }
            return true;
        }
        #endregion

  

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网