C# 报文是数组,获取固定开头和结尾的报文
时间: 2024-05-01 13:23:06 浏览: 57
如果你已经将报文读取到了一个 byte[] 数组中,可以使用以下代码来获取固定开头和结尾的报文:
```csharp
byte[] message = ...; // 报文数组
byte[] header = ...; // 报文开头
byte[] footer = ...; // 报文结尾
int headerIndex = -1, footerIndex = -1;
// 找到报文开头和结尾的位置
for (int i = 0; i < message.Length; i++)
{
if (headerIndex < 0 && message[i] == header[0])
{
bool foundHeader = true;
for (int j = 1; j < header.Length; j++)
{
if (i + j >= message.Length || message[i + j] != header[j])
{
foundHeader = false;
break;
}
}
if (foundHeader)
{
headerIndex = i;
i += header.Length - 1;
}
}
if (footerIndex < 0 && message[i] == footer[0])
{
bool foundFooter = true;
for (int j = 1; j < footer.Length; j++)
{
if (i + j >= message.Length || message[i + j] != footer[j])
{
foundFooter = false;
break;
}
}
if (foundFooter)
{
footerIndex = i + footer.Length;
break;
}
}
}
if (headerIndex >= 0 && footerIndex >= 0)
{
int messageLength = footerIndex - headerIndex;
byte[] result = new byte[messageLength];
Array.Copy(message, headerIndex, result, 0, messageLength);
// result 就是取出的报文
}
else
{
// 没有找到完整的报文
}
```
这段代码会遍历整个报文数组,查找报文开头和结尾的位置,如果找到了完整的报文,则将其拷贝到一个新的 byte[] 数组中返回。如果没有找到完整的报文,则返回 null 或者抛出异常等,具体处理方式取决于你的程序逻辑。
阅读全文