我想知道如何将一些字符串写入字节数组的一个字节(在MS Visual 2015社区版中运行C#WinForms)。
我有一个控制步进电机的控制板。为了通过SerialPort
向电机发送命令,电路板需要一个长度为9的字节数组。
在阵列的每个字节中都存储了一个信息(如电路板地址,电机编号等)。此数组中的最后3个字节用于速度。从制作人随附的程序的源代码中,有时我需要发送的信息如下:" b0"," bc"," a7&# 34;我怎样才能将它写入所需位置的数组中。目前,我喜欢这样:
private void button3_Click(object sender, EventArgs e)
{
byte[] a = new byte[9];
a[0] = 1;
a[1] = 1;
a[2] = 0;
a[3] = 0;
a[4] = 0;
a[5] = 0;
a[6] = 02; //could also be like "bc"
a[7] = Convert.ToByte("bc"); // if its a number from 00 to
a[8] = Convert.ToByte("c0"); // 99 the motor works as planned
serialPort1.Write(a, 0, a.Length);
}
如果我在字节6-9中有0到99的正常数字,则电机按预期运行。但更高的速度有字符串值。为什么变量看起来像他们看起来的样子我稍后会弄清楚,但是从我的计划现在手动输入会很好,因为电机应该只以一种速度运行。
到目前为止,我的完整代码已编译,但发送后我得到:
FormatExceptionError {" Inputstring格式错误。"}
我发现了如何将完整的字符串转换为完整的字节数组的问题,但那些并没有真正帮助我。
答案 0 :(得分:4)
您需要specify the base输入字符串:
a[7] = Convert.ToByte("bc", 16);
a[8] = Convert.ToByte("c0", 16);
Base 16是十六进制的。
答案 1 :(得分:4)
那些不是字符串值。它们是每个字节的hexadecimal表示。使用0x
作为前缀来指示十六进制值。
a[7] = 0xBC;
a[8] = 0xC0;