我试图采用十六进制FFFFFFFF7DA98035
的字符串,并在我的程序中的文本框中显示其扩展的ASCII字符。我有问题,80作为它的-128,什么也不显示。
Visual Studio编译时没有错误,但在解析字符串时抛出异常。
private static string ConvertHextoAscii(string HexString)
{
byte[] data = new byte[HexString.Length / 2];
for (int i = 0; i < HexString.Length - 1; i += 2)
{
data[i / 2] = byte.Parse(HexString.Substring(i, 2));
}
return Encoding.GetEncoding("Windows-1252").GetString(data);
}
byte.Parse
期望一个包含整数(十进制)的字符串。但是,HexString.Substring(i, 2)
将返回一个十六进制数字(作为字符串)。
执行以下操作指示byte.Parse
期望十六进制数:
data[i / 2] = byte.Parse(HexString.Substring(i, 2), NumberStyles.HexNumber);