【问题标题】:read line from sequence of byte arrays从字节数组序列中读取行
【发布时间】:2019-11-01 11:56:38
【问题描述】:

我从蓝牙 BLE 接收数据,最多 250 字节块。

onDataReceived(byte[] data) {
  my_readline();  // <-- how could I implement this
}

数据是字符串但已分块。那么从传入字节数组中检测行的正确方法是什么。或者,如果可以将接收到的数据也转换为 inputStream,那就更好了。

【问题讨论】:

标签: java arrays bluetooth-lowenergy byte


【解决方案1】:

您可以使用 ByteArrayInputStream 并将其转换为 BufferedReader。虽然它应该可以工作,但它不是很干净。

    InputStream inputStream = new ByteArrayInputStream(data);
    BufferedReader buffReader = new BufferedReader(new InputStreamReader(inputStream));

【讨论】:

  • 如何向 ByteArrayInputStream 添加连续的数据字节数组?
  • 据我所知这是不可能的。只有将所有数据放在一起后,您才能处理数据
【解决方案2】:

您可以将字节数组转换为字符串,

String inputStr = new String(data, "UTF-8");

如果你想转换成InputStream,

InputStream dataInputStream = new ByteArrayInputStream(data); 

【讨论】:

  • 如何从 inputStr 读取行以及如何向 inputStr 添加新的字节数组
  • 如果要添加新字节,可以使用 StringBuilder 并附加字符串。希望对你有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多