【问题标题】:Implementing Buffer for Byte Arrays in Java在 Java 中实现字节数组的缓冲区
【发布时间】:2011-12-25 18:39:00
【问题描述】:

我正在尝试在 android 应用程序中实现缓冲区,以便可以缓冲来自蓝牙连接的传入字节数组流。我需要在收到字节数组时对其进行一些处理,这就是我想使用某种缓冲的原因。

基本上,我会接收一个字节数组,将其存储在缓冲区中,然后当下一个字节数组进入缓冲区时,我会按照它们进入的顺序将它们拉出以进行处理。换句话说,我需要一个first in, first out 实现。

谁能指出我应该使用哪种类型的缓冲区的正确方向?我不确定我要查找的内容是否有特定名称。如果您可以指导我找到一些用于缓冲区实现的好资源,那也将非常有用。

如果有任何不清楚的地方,请询问,我会尽力澄清。

【问题讨论】:

  • 你不是说先进先出吗? “我会按照他们进来做我的处理的顺序把他们拉出来”。
  • 是的,对不起。我的意思是先进先出。

标签: java android bluetooth bytearray buffer


【解决方案1】:

您是在缓冲传入的字节还是字节数组?如果您正在缓冲字节数组,您可能需要LinkedBlockingQueue

【讨论】:

  • 我输入的数据是 16 位格式的。所以我不确定我是否应该简单地将字节数组用作缓冲区,使其相当大。这有意义吗?或者我应该让字节数组每个 2 个字节,然后单独缓冲它们?
【解决方案2】:

【讨论】:

    【解决方案3】:

    对于 FILO,您实际上需要 Stack。看看java.util.Stack。您应该将其实例化为new Stack<byte[]>()。然后,您可以将数据推送到其中,并在您有时间处理时将其弹出。

    【讨论】:

    • 我输入的数据是 16 位格式的。所以我不确定我是否应该简单地使用字节数组作为缓冲区,使其相当大。这有意义吗?或者我应该让字节数组每个 2 个字节,然后单独缓冲它们?
    【解决方案4】:

    使用 StringBuilder ,在里面追加传入的数据,可以在里面做如下操作

    1) 插入或追加字符串数据(或字节转换为字符串)。

    2) 在任何特定位置追加。

    3) 可以反转整个数据。

    4) 可以从特定位置获取字节/字符。

    如果有任何问题,请告诉我。 你也可以使用字节数组、字节缓冲区等

    【讨论】:

    • 我输入的数据是 16 位格式的。所以我不确定我是否应该简单地将字节数组用作缓冲区,使其相当大。这有意义吗?或者我应该让字节数组每个 2 个字节,然后单独缓冲它们?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多