有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java分区字节数组到队列的相等字节数组

因此,我有一个来自服务器的字节数组动态大小,我需要将其划分为15个大小相等的字节数组,并将其添加到我的Queue<ByteArray>。那我该怎么做呢

我需要这个来装我的BLE设备。我正在进行固件更新,我需要将字节数组转换为队列中每个字节相等的20个字节,以便顺利进行

例如,从服务器接收的字节数组是256。我想要我的

queue[0]=bytes[0-15] onpeek() 
queue[1]=bytes[16-30] onPeek()
queue[2]=bytes[31-45]onPeek()
 ...
....
queue[n]= bytes[240-255] onPeek()

我的代码:

private val sendQueue: Queue<ByteArray> = ConcurrentLinkedQueue()

    @Volatile
    private var isWriting = false


    fun send(
        dataByte: ByteArray,
        gatt: BluetoothGatt
    ): Int {
        var data = dataByte
        while (data.count() > 15) {

//            todo divide into 20 equal byte array and add it to sendQueue.
           
        }
        sendQueue.add(data)

        if (!isWriting) _send(gatt)
        return 0 //0
    }

共 (1) 个答案

  1. # 1 楼答案

    我不确定你是否理解你的问题,但这可以提供一个方向

    dataByte.asIterable().chunked(15).forEach { 
        // 'it' is a List<Byte>, convert it to ByteArray in order to add it to queue.
        sendQueue.add(it.toByteArray())
    }
    

    将dataByte称为Iterable将允许您chunk将其设置为所需的大小, 然后,您只需迭代它的结果并将其添加到队列中