【问题标题】:Detect an Element in an array and create a new array based on that element检测数组中的元素并基于该元素创建一个新数组
【发布时间】:2020-12-23 15:18:45
【问题描述】:

我有一个串行通信协议,我一直在接收消息,消息几乎同时到达一个数组,我想使用确定开头的字符将这个数组分成几个其他数组 [102 ] [102] 并在指示消息结束的字符处停止 [50] [101],你怎么能这样做?

我尝试如下:

byte[] buffer = Arrays.copyOfRange(dados,0,16);
                    byte[] buffer1 =  Arrays.copyOfRange(dados,16,32);
                    byte[] buffer2 = Arrays.copyOfRange(dados, 32, 48);

但是,如果我停止接收来自我的任何设备的消息,则主数组会更改,从而产生异常

【问题讨论】:

  • 你尝试过做什么?您必须提供minimal reproducible example,以便我们可以帮助您解决任何错误或修复代码中的任何不正确行为。 Stack Overflow 并非旨在用作其他人为您编写代码的软件开发服务。
  • 很抱歉,我将使用代码 sn-p 编辑问题,说明我是如何做到的

标签: java arrays serial-port communication


【解决方案1】:
List<Integer> startPositions = getPositions(inputBytes, startPattern);
List<Integer> endPositions = getPositions(inputBytes, endPattern);        
  • 然后通过迭代开始来对 inputBytes 进行切片。
  • 当您处理开始时 => 在结束列表中搜索下一个可见结束。
  • 然后你就可以切薄片了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2021-10-16
    • 2020-02-04
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多