2016-12-05 46 views
1

我想知道如何继续以便将一些字符串写入字节数组的一个字节(在MS Visual中运行C#WinForms 2015社区版)。将字符串变量写入字节数组的一个字节,如字节[6] =“c6”

我有一个控制板,控制步进电机。为了通过SerialPort向电机发送命令,电路板需要一个长度为9的字节数组。

在阵列的每个字节中都存储了一个信息(如电路板地址,电机编号等)最后3个字节在这个阵列中是为了速度。从生产者随附的程序的源代码中,有时我需要发送的信息如下所示:“b0”,“bc”,“a7”等。我如何将它写入所需的数组中地点。目前,我有这样的:

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

如果我在正常数字从0到99在字节6-9电动机按预期运行。但更高的速度有字符串值。为什么这些变量看起来是他们看起来的样子,后面我会想到,但是从我现在的计划来看,手动输入应该没问题,因为电机只能以一种速度运行。

到目前为止,我完整的代码并编译,但发送后我得到:

FormatExceptionError {“Inputstring有格式错误。”}

我发现了如何将完整的字符串转换问题成一个完整的字节数组,但这些并没有真正帮助我。

+0

@TripleEEE:[**当然它**](https://msdn.microsoft.com/en-us/library/c7xhf79k(V = vs.110)的.aspx)。 –

+0

为什么你需要它作为字符串?其余的位置显然是用字节填充的。 –

+0

@TripleEEE:[**其实它也有**](https://msdn.microsoft.com/en-us/library/y57wwkzk(v = vs.110).aspx)。 –

回答

4

那些不是字符串值。它们是每个字节的hexadecimal表示。使用0x作为前缀来指示十六进制值。

a[7] = 0xBC; 
a[8] = 0xC0; 
+0

非常感谢,完美的工作和电机正在转动,因为我想。我认为十六进制是非常长的价值,因此我虽然是一些字符串=) –

4

您需要输入字符串的specify the base

a[7] = Convert.ToByte("bc", 16); 
a[8] = Convert.ToByte("c0", 16); 

基地16是十六进制。

+0

非常感谢,工作得很好,但我使用了其他答案中提到的0x前缀。 –

+0

@ChristophPoser:那么你应该将其标记为接受的答案。 –

相关问题