十六进制转换器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;
}
使用以下正则表达式检查数据是否有效:
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");
尽管如此,我还是建议你保持原样,如果参数是错误的,让你的方法抛出一个异常。您应该在更高级别上进行错误处理,以便从中恢复。