我们在java中会经常用到 System.arraycopy 函数 这函数操作字节数组是相当方便的。 如果你不懂什么是 System.arraycopy 函数 请看 System.arraycopy的学习之路
刚学习完 还没来得及消化呢 在VUE中 用到了这个
在前端里面很少操作字节数组 ,我们一般操作的都是数组 所有在vue里面 我们也操作的是数组
废话不多说看代码
arrayCopy(srcBuff, offset, desBuffer, pos, length) {
var newBuffer = srcBuff.slice(offset, offset + length);
desBuffer = JSON.parse(JSON.stringify(desBuffer))
if (pos == 0) {
desBuffer = new Array()
for (var i = 0; i < newBuffer.length; i++) {
desBuffer.push(newBuffer[i])
}
return desBuffer
} else {
if (desBuffer.length == 0) {
var headerBuff = desBuffer.slice(0, pos)
for (var i = 0; i < newBuffer.length; i++) {
headerBuff.push(newBuffer[i])
}
return headerBuff
} else {
var buffer = desBuffer.slice(0, pos);
var lendBuffer = desBuffer.slice(pos, offset + length)
if (buffer.length < pos) {
var posss = pos - buffer.length
for (var i = 0; i < posss; i++) {
buffer.push(0x00);
}
}
for (var i = 0; i < newBuffer.length; i++) {
buffer.push(newBuffer[i])
}
for (var i = 0; i < lendBuffer.length; i++) {
buffer.push(lendBuffer[i])
}
desBuffer = buffer.map(Number);
return desBuffer
}
}
}
这里判断了 一种是拷贝长度是从0开始的 另外一种是不为0的情况(在里面又判断了一直到目标数组位置是从0开始的,还判断了长度不够的情况下补0)
剩下的就是调用了 调用我就不贴代码了
欢迎还有更懂的大佬来优化我的代码
哈哈哈 这就是我的态度
|