这是我到目前为止提出的代码,但是当我输入一个字母值如AA时,它会抛出此异常。
“mscorlib.dll中发生了'System.FormatException'类型的未处理异常附加信息:输入字符串的格式不正确。”
如果用户输入无效值,我还想包含一些错误消息。任何帮助都会很棒,谢谢。
private void GPIO_Click(object sender, EventArgs e)
{
string hex = WriteValue.Text;
string[] hex1 = hex.Split(',');
byte[] bytes = new byte[hex1.Length];
for (int i = 0; i < hex1.Length; i++)
{
bytes[i] = Convert.ToByte(hex1[i]);
}
for (int i = 0; i < hex1.Length; i++)
{
GPIO(h[index], dir, bytes[i]);
ReadValue.Text += bytes[i].ToString();
}
}
答案 0 :(得分:2)
您需要使用base设置为16(十六进制)来调用它。
Convert.ToByte(text, 16)
许多重复:
c# string to hex , hex to byte conversion
How do you convert Byte Array to Hexadecimal String, and vice versa?
答案 1 :(得分:1)
到达时
bytes[i] = Convert.ToByte(hex1[i]);
hex1[i]
的值为"AA"
你的应用程序在这里失败了,因为你无法适应&#34; AA&#34;作为单个字节中的字符串。
如果您正在寻找字符串的字节数组转换, 你会想把这个值分成字符;像这样:
string hex = "AA";
string[] hex1 = hex.Split(',');
List<byte[]> byteArrays = List<byte[]>();
foreach (string t in hex1)
{
int byteIndex = 0;
byte[] newArray = new byte[hex1.Length];
foreach(char c in t)
{
newArray [byteIndex] = Convert.ToByte(c);
byteIndex++;
}
byteArrays.add(newArray);
}
但我并不认为这是你追求的目标。您正在寻找解析表示为字符串的十进制值。