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

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

1
2
3
4
5
6
7
8
9
10
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);
        }

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
       }

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// <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

  

posted @   ZaraNet  阅读(5801)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2018-09-19 无法识别实体转换拉巴表达式
2018-09-19 SqlServer突破亿级数据操作瓶颈(出处:转载)
点击右上角即可分享
微信分享提示