【发布时间】:2009-02-12 07:39:01
【问题描述】:
实际上我正在使用 .Net Framework 3.5,所以我拥有所有这些不错的小功能,例如 lambdas、linq 等。
Given 是一个串行连接(或者更抽象地说:一个流),您可以在其中接收一些数据,这些数据的格式如下:
struct Packet
{
byte STX
UInt16 DataLength
string Data
byte CRC
byte ETX
}
使用传入数据的简单映射无济于事,因为您并不真正知道一个数据包的长度,因为它是写在结构中的(DataLength)。
所以我的第一个想法是逐字节读取流并将其放入???。是的,这是下一个问题。第一个原始数据存储在哪里?放入一个简单的字节数组,具有最大可能长度(这将是 65540 字节,因为 DataLength 是 UInt16 加上来自其他字段的附加字节)。或者我应该打开一个队列并填满所有传入的字节,还是可能存在另一个很好的可能性?
让我们假设这些问题已经解决,并且我有某种本地缓冲区,它保存了流中的所有原始字节。通过给定的结构来解释它的最好方法是什么?只是做某种 for- 或 foreach-loop 还是存在一种更智能(性能更好)的方式(例如,使用 regex 或 linq)?
最好的问候, 奥利弗
【问题讨论】:
标签: c#