Nodejs 定位器回传数据,需要按照长度切割字符串
Nodejs 定位器回传数据,需要按照长度切割字符串
在处理定位数据回传时,定位器回回传一条或者连在一起的几条数据,所以要按照32字节进行切割
2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F //一条记录
2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F //四条记录。
暂时没有办法进行切割。
查javascript 资料,用replace
var str = buffer.replace(/(.{32})/g)
Node.js 定位器回传数据,需要按照长度切割字符串
在处理定位数据回传时,定位器可能会回传一条或者连在一起的几条数据。这些数据通常以固定长度(例如32字节)的形式存储。因此,我们需要将这些数据按照指定长度进行切割。
示例代码
以下是一个简单的示例代码,展示如何使用Node.js来实现数据的切割:
// 假设这是从定位器接收到的数据
const data = `2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F
2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F
2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F
2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F`;
// 将数据转换为数组,每条数据作为一个元素
const records = data.split('\n').map(record => record.trim());
// 按照32字节切割数据
function cutDataIntoChunks(records, chunkSize) {
return records.map(record => {
const chunks = [];
for (let i = 0; i < record.length; i += chunkSize) {
chunks.push(record.substring(i, i + chunkSize));
}
return chunks;
});
}
// 使用32字节切割数据
const result = cutDataIntoChunks(records, 32);
console.log(result);
解释
-
数据准备:首先,我们将接收到的数据存储在一个字符串变量中,并将其按行分割成一个数组。每一行代表一条记录。
-
切割函数:定义一个名为
cutDataIntoChunks
的函数,该函数接受两个参数:records
(包含所有记录的数组)和chunkSize
(每个块的大小,这里是32字节)。 -
循环切割:在
cutDataIntoChunks
函数内部,我们遍历每条记录,并使用substring
方法将数据切割成指定长度的块。每个块被添加到一个数组中,最后返回这个数组。 -
结果输出:调用
cutDataIntoChunks
函数并打印结果。这将输出一个二维数组,其中每个子数组都包含了按照32字节切割后的数据块。
通过这种方式,我们可以轻松地将定位器回传的多条数据按照32字节的长度进行切割处理。
var flag = 32;
var arr = [];
for(var i=0,len=str.length/flag;i<len;i++) {
str1 = str.substr(0,flag);
str = str.replace(str1,'');
//在此可以进行arr.push(str1)操作
alert(str1);
}
if ( buffer.length < 1025 ){
var flag = 64;
var arr = [];
for(var i=0,len=buffer.length/flag;i<len;i++) {
str1 = buffer.substr(0,flag);
buffer = buffer.replace(str1,'');
arr.push(str1);
}
可以输出数组了,
[ ‘2471012160100329022402112232103700113284958e000161fffffbffff000f’, ‘2471012160110429022402112332103700113284958e000162fffffbffff000f’, ‘2471012160120529022402112432103700113284958e000163fffffbffff000f’ ]
对上面的数组元素进行解码的已写好,但如何把这些数组的元素一个一个传递到变量 msg。