十六进制转换器ArgumentOutOfRangeException

本文关键字:ArgumentOutOfRangeException 转换器 十六进制 | 更新日期: 2023-09-27 18:27:41

我的十六进制转换器在转换有效十六进制时工作正常,但在转换无效十六进制时会出现ArgumentOutOfRangeException错误,我不知道如何处理此异常。

我的代码:

public string DecryptHex(ref string Data)
{
    string Data1 = "";
    string inData = "";
    while (Data.Length > 0)
    {
        Data1 = System.Convert.ToChar(System.Convert.ToUInt32(Data.Substring(0, 2), 16)).ToString();
        inData = inData + Data1;
        Data = Data.Substring(2, Data.Length - 2);
    }
    return inData;
}

十六进制转换器ArgumentOutOfRangeException

使用以下正则表达式检查数据是否有效:

if (System.Text.RegularExpressions.Regex.IsMatch(Data, "0[xX][0-9a-fA-F]+")) {
}

--

public string DecryptHex(ref string Data)
{
    string inData = string.Empty;
    if (System.Text.RegularExpressions.Regex.IsMatch(Data, "0[xX][0-9a-fA-F]+")) {
        string Data1 = "";
        while (Data.Length > 0)
        {
            Data1 = System.Convert.ToChar(System.Convert.ToUInt32(Data.Substring(0, 2), 16)).ToString();
            inData = inData + Data1;
            Data = Data.Substring(2, Data.Length - 2);
        }
    }
    return inData;
}

如果方法没有接收到有效的十六进制数,我不确定您希望返回什么,但如果字符串是有效的十六进位数,您可能需要使用以下正则表达式测试它:

Regex.IsMatch(test, @"'A'b[0-9a-fA-F]+'b'Z");

尽管如此,我还是建议你保持原样,如果参数是错误的,让你的方法抛出一个异常。您应该在更高级别上进行错误处理,以便从中恢复。

相关文章:
  • 没有找到相关文章