gpt4 book ai didi

java - 将ByteArray划分为队列的ByteArray

转载 作者:行者123 更新时间:2023-12-02 13:15:30 25 4
gpt4 key购买 nike

因此,我从服务器获得了一个动态大小的ByteArray,我需要将其划分为15个相等大小的的,并将其添加到我的Queue<ByteArray>中。那么我该怎么做呢?
我的BLE设备实际上需要此。我正在执行固件更新,我需要将字节数组转换为Queue中每个相等的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
}

最佳答案

您可以尝试这样的操作(草稿,不检查)

var partCount = 20;
var data = dataByte;
var len = data.getLength();
var partSize = len / partCount;
for (int i = 0; i < partCount - 1; i++) {
var newArray = Arrays.copyOfRange(bytes, i * partSize, (i + 1) * partSize);
sendQueue.add(newArray);
}
// and we added last part (may be a little bigger then other parts if "len % 20 != 0").
var newArray = Arrays.copyOfRange(bytes, partSize * (partCount - 1), len);
sendQueue.add(newArray);

关于java - 将ByteArray划分为队列的ByteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64445694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com