十六进制字符串的字节转换在 C# 中使用字母字符“G”及更高版本一直失败
Posted
技术标签:
【中文标题】十六进制字符串的字节转换在 C# 中使用字母字符“G”及更高版本一直失败【英文标题】:Byte Conversion From Hex String Keeps Failing With Alphabet characters "G" and upwards in C# 【发布时间】:2014-01-08 21:42:17 【问题描述】:我正在尝试构建一个简单的 XOR 函数,该函数可以从单个字符中解密十六进制密钥。它适用于多个字符和单个字符......但仅限于从“A”到“F”。从“G”开始,它不断抛出“FormatException”。
这是问题函数,用两个字符串传递:
// For Reference:
// strHexKey = "G";
// strHexInput = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"
private string SCXOR_Update(string strHexKey, string strHexInput)
byte[] buffer1 = hexbuffer(strHexInput);
byte buffer2 = Convert.ToByte(Convert.ToInt32(strHexKey, 16));
byte[] result = buffer1;
for (int i = 0; i < (strHexInput.Length / 2); i++)
result[i] = (byte)(buffer1[i] ^ buffer2);
return BitConverter.ToString(result).Replace("-", "");
异常在“byte buffer2”行抛出,并且仅在从字母“G”向上推进时发生。
知道我错过了什么吗?一定是在瞪我?!
提前致谢!
【问题讨论】:
G 不是有效的十六进制值 【参考方案1】:十六进制是a base 16 counting system。它仅包含以下数字 - 尽管也经常使用小写字符:
0123456789ABCDEF
【讨论】:
欲了解更多信息,请访问en.wikipedia.org/wiki/Hexadecimal 更多有趣的阅读请参阅en.wikipedia.org/wiki/Finger_binary :) 啊,我明白了!认为这将是显而易见的事情!谢谢大家:D以上是关于十六进制字符串的字节转换在 C# 中使用字母字符“G”及更高版本一直失败的主要内容,如果未能解决你的问题,请参考以下文章