123456789101112131415161718192021222324252627282930313233343536 |
- // protoBuffer.js
- import VarintElement from './varintElement.js'; // 导入 VarintElement
-
- function findVarint(hexData) {
- // hexData 是 Uint8Array,直接遍历字节
- // 定义返回对象,初始化为 null
- let ret = null;
- for (let i = 0; i < hexData.length; i++) {
- // 检查最高位是否为 1(即 & 0x80 是否非零)
- if ((hexData[i] & 0x80) !== 0) {
- continue; // 如果最高位为 1,则继续检查下一个字节
- }
-
- // 找到 Varint 终止字节
- ret = new VarintElement();
- ret.endPos = i + 1; // 结束位置,以字节为单位
- ret.varint = hexData.slice(0, i + 1); // 提取 Varint 部分,返回 Uint8Array
-
- // 如果需要将 varint 转换为字符串格式
- /*
- ret.varint = Array.from(hexData.slice(0, i + 1)) // 转为数组
- .map(byte => byte.toString(16).padStart(2, '0')) // 转为两位十六进制字符串
- .join(' ')
- .toUpperCase();
- */
-
- // 退出循环
- break;
- }
-
- // 如果未找到 Varint 终止字节,返回 null
- return ret;
- }
-
- // 使用 module.exports 导出
- module.exports = { findVarint };
|