【问题标题】:Processing messages from a byte[] buffer, prepending leftover bytes to the next buffer处理来自 byte[] 缓冲区的消息,将剩余字节添加到下一个缓冲区
【发布时间】:2016-05-27 02:33:37
【问题描述】:

我有一个 256 字节数组 (byte[256]),我有一个字节数据流,我正在读取字节数组上的 256 缓冲区大小。

我解析字节数组并从字节数组中提取 2 个“消息”...在数组中留下 13 个字节未处理。

问题我如何将 13 个字节附加到下一个传入的 256 字节数组,以便我可以以最快的方式处理来自第一个字节数组和第二个字节数组的“部分字节”?

例子:

    [256 Array]
    [+++++++++++++++++++] (1st Buffer)
    [**************] (Processed in the first iteration...)
                   [----] (Remaining from the 1st Buffer)
                   [----][++++++++++++++++++++](Old Buff + New Buff256[])
                   [-----+++++++++++++++++++++] <---- (THIS)
                  (How do I get this Combination to process in the most
                  efficient manner so I am not missing messages that may
                  have been chopped off by my buffer size from the old buffer)

提前谢谢各位。

【问题讨论】:

  • 欢迎您!有什么代码可以显示吗?你做了什么研究?这将帮助我们帮助您。祝你好运!
  • @Valmorgal 好像有解决办法here

标签: c# arrays byte buffer


【解决方案1】:

声明一个 512 字节而不是 256 字节的缓冲区。

当您准备好接收另外 256 个字节时,请检查缓冲区中是否有剩余。如果这样做,请将它们复制到缓冲区的开头。

然后接收您的 256 个字节,将它们放在剩余部分之后。

假设您的消息均小于 256 字节,则不应超出缓冲区。

【讨论】:

  • @blogbeard 感谢您的回复。我正在寻找一个快速的实现来完全按照你所说的去做。将剩余的字节放在新缓冲区的开头。
  • 嗯,你需要多快?为什么这还不够快?
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多