如何将逗号分隔的十六进制值输入文本框并输出为十六进制值 c#
本文关键字:十六进制 文本 输出 输入 分隔 | 更新日期: 2023-09-27 18:34:31
这是我到目前为止为此想出的代码,但是当我输入诸如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);
}
但我不认为这就是你所追求的。 您希望分析表示为字符串的十进制值。