# buffer-parser **Repository Path**: GLUESTICK/buffer-parser ## Basic Information - **Project Name**: buffer-parser - **Description**: buffer-parser - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-29 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # buffer-parser 用于获取原始二进制数据并将其转换为可用消息。这可能包括诸如将数据转换为文本、在完全接收到有用的数据块时发出有用的数据,甚至验证协议等任务。 ## 包含以下工具: ### 解析器 - cCTalkParser <数据包解析器> - readlineParser <字符串解析器> - interByteTimeoutParser <数超时字节解析器> ### 打包器 - dataPackager ### 校验器 - xorCheck ### 转换器 - abToHexArr - hexArrToAb - strToAb - hex2int - hexArrToIntArr - bufferToAb ### interByteTimeoutParser(buffer, cb, [options]) 超时字节解析器 --- 缓冲并在指定时间内未接收任何字节或达到最大缓冲区大小后发出数据 ```javascript const options = { interval: 100, // 等待毫秒数 maxBufferSize: 1024, // 缓冲区大小 }; interByteTimeoutParser( buffer, (res) => { // 100毫秒内没有再次调用此方法 将会执行一次这里 // 缓冲区满 将会执行一次这里 const str = readlineParser(res); console.log(str); }, options ); ``` ### cCTalkParser(buffer, [operationCode]) 数据包解析器 --- 将带有帧头、操作码、帧长度、帧尾的数据包转换为可用数据 ##### 数据结构 | 帧头 | 帧头 | 操作码 | 数据长度 | 数据 | 校验位 | 帧尾 | 帧尾 | | :--: | :--: | :----: | :------------------------: | :------: | :----------------: | :--: | :--: | | 5c | 5a | 00 | 帧头之后帧尾之前的数据长度 | 长度不定 | 帧头开始校验位之前 | 0d | 0a | `` 转换为 `[{"operationCode":0,"data":[15,13,5,7,45,32,54]}]` ```javascript const operationCode = 0; //操作码 const buffer = dataPackager([15, 13, 5, 7, 45, 32, 54], operationCode); // => const data = cCTalkParser(buffer); console.log(data); // => [{"operationCode":0,"data":[15,13,5,7,45,32,54]}] ``` #### readlineParser(string, [options]) 字符串解析器 将 `` 转换为字符串: `CONNECT,CONNECT` ```javascript const buffer = Buffer.from('CONNECT\r\nCONNECT\r\n'); const str = readlineParser(buffer, { delimiter: '\r\n', // 换行符 includeDelimiter: false, // 返回结果是否包含换行符 separator: ',', // 分隔符 }); console.log(str); // => CONNECT,CONNECT ``` ## 包含以下工具 ### dataPackager(arr, [operationCode = 0]) 打包器 为数组添加上帧头、操作码、数据长度、校验位、帧尾 并返回 Buffer ```javascript const operationCode = 5; //操作码 const buffer = dataPackager([15, 13, 5, 7, 45, 32, 54], operationCode); // => ``` ### xorCheck(arr) 数据校验 异或校验计算 ```javascript const arr = [15, 13, 5, 7, 45, 32, 54]; const xor = xor(arr); // => 3a ```