Nodejs 定位器回传数据,需要按照长度切割字符串

Nodejs 定位器回传数据,需要按照长度切割字符串

在处理定位数据回传时,定位器回回传一条或者连在一起的几条数据,所以要按照32字节进行切割

2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F  //一条记录

2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F    //四条记录。

暂时没有办法进行切割。

查javascript 资料,用replace

var str = buffer.replace(/(.{32})/g)

sipgear


5 回复

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);

解释

  1. 数据准备:首先,我们将接收到的数据存储在一个字符串变量中,并将其按行分割成一个数组。每一行代表一条记录。

  2. 切割函数:定义一个名为cutDataIntoChunks的函数,该函数接受两个参数:records(包含所有记录的数组)和chunkSize(每个块的大小,这里是32字节)。

  3. 循环切割:在cutDataIntoChunks函数内部,我们遍历每条记录,并使用substring方法将数据切割成指定长度的块。每个块被添加到一个数组中,最后返回这个数组。

  4. 结果输出:调用cutDataIntoChunks函数并打印结果。这将输出一个二维数组,其中每个子数组都包含了按照32字节切割后的数据块。

通过这种方式,我们可以轻松地将定位器回传的多条数据按照32字节的长度进行切割处理。


var strArr = [];
            var n = 64;
            for (var i = 0, l = buffer.length; i < l/n; i++) {
                var a = buffer.slice(n*i, n*(i+1));
                strArr.push(a);
            }
            console.log(strArr);

实现了

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。

针对这个问题,我们可以使用JavaScript内置的方法来实现字符串按固定长度(例如32字节)进行切割。下面将提供一个简单的示例代码,用于展示如何实现这一功能。

示例代码:

function splitStringIntoChunks(str, chunkSize) {
    const chunks = [];
    for (let i = 0; i < str.length; i += chunkSize) {
        chunks.push(str.substr(i, chunkSize));
    }
    return chunks;
}

const data = "2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F2471012160480329022402112232103700113284958E000161FFFFFBFFFF000F";
const chunkSize = 32;

const result = splitStringIntoChunks(data, chunkSize);

console.log(result);

解释:

  • splitStringIntoChunks 函数接收两个参数:str 是原始字符串,chunkSize 是每个片段的长度。
  • 在循环中,我们使用 substr 方法从当前位置开始截取长度为 chunkSize 的子串,并将其推入 chunks 数组中。
  • 循环结束后,返回包含所有子串的数组 chunks

这样我们就得到了一个数组,其中每个元素都是原始字符串的一部分,且长度为32个字符。

回到顶部