我的十六进制转换器在转换有效的十六进制时工作正常,但在转换无效的十六进制时它给我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;
}
答案 0 :(得分:1)
如果没有收到有效的十六进制数字,我不确定你希望你的方法返回什么,但是你可能想测试你的字符串,如果它是一个带有以下正则表达式的有效十六进制数字:
Regex.IsMatch(test, @"\A\b[0-9a-fA-F]+\b\Z");
虽然,我建议您保持原样,如果参数错误,请让您的方法抛出异常。您应该在更高级别上进行错误处理以从中恢复。
答案 1 :(得分:1)
使用以下正则表达式检查您的数据是否有效:
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;
}