我有十六进制数据从串行设备发出的数据流,格式如下:拆分流十六进制字符串成小块
F4 01 09 05 05 F4 01 09 05 05 F4 F 01 09 05 05 F4 01 09 05 05
我需要做的(在C#)读取输入字符串,并按'F4'分成块,以便处理。所以,我得到:
string DataToProcess = "F4 01 09 05 05";
的更新,因为每个部分进来
我有点坚持以接近这一点的最好办法。
我:
byte[] data = new byte[count];
_serialPort.Read(data, 0, data.Length);
string rawString = BitConverter.ToString(data, 0);
if (rawString.Contains("F4"))
{
//split here?
}
由于是现场直播,在count
变量总是在变化。我怎样才能'等'F4
,并从一个部分创建一个子串?
谢谢。
就是 “F4” 子总是相同的长度或执行从一个F4到另一个va的字节数还有吗? –
它是相同的长度。但是这个流可能不是从F4开始的。 – anti
我假设数据正在一个循环内被读取。下一次迭代从前一次结束的地方开始。因此,Read函数返回读取的字节数,它可以告诉您有多少个子字符串,其余字节(小于F4子字符串的长度)应该保存并添加到数据数组的开头下一次迭代。 –