如何将逗号分隔的十六进制值输入文本框并输出为十六进制值 c#



这是我到目前为止为此想出的代码,但是当我输入诸如AA之类的字母值时,它会引发此异常。

"mscorlib 中发生了类型为'System.FormatException'的未处理异常.dll 其他信息:输入字符串格式不正确。

如果用户输入无效值,我还想包含一些错误消息。任何帮助都会很棒,谢谢。

               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();
                    }
                 }

您需要在 base 设置为 16(十六进制(的情况下调用它。

Convert.ToByte(text, 16)

许多重复项:

C# 字符串到十六进制,十六进制到字节的转换

如何将字节数组转换为十六进制字符串,反之亦然?

当你到达

bytes[i] = Convert.ToByte(hex1[i]);

hex1[i]的价值是"AA"

您的应用在此处失败,因为您无法将"AA"作为单个字节中的字符串。

如果您正在寻找字符串的字节数组转换,您需要将该值拆分为字符;喜欢这个:

  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);
  }

但我不认为这就是你所追求的。 您希望分析表示为字符串的十进制值。

最新更新