华为OD --- TLV解码

华为OD --- TLV解码

题目

独立实现

理解

个人认为这题最大的难点就是理解题目

以测试用例举个🌰

js 复制代码
31
32 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00 CC

题目需要找到tag 31对应的value值. 示例中第一个tag值为32,由于,所以tag31对应的length为01,00,又因为,小端序简单来说就是和我们理解的字节序完全相反,比如一个数字是2311,那么按小端序排列就是1132.(小端序参考资料),那么tag31对应的length长度应该是01 -> 10 00 -> 00,最后合并成0001.那么对应的tag长度就是1, tag的value值完全取决于tag的长度,因为tag31的长度是1,那么value值就往后取一位就行为AE.

思路

按照题目理解 我们可以把输入流所有的tag以及对应的value值全部找出来,最后直接输出就行.题主使用的是map数据结构来保存.如题目测试用例,最后的数据结构就是

AC源码

js 复制代码
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // 输入字符串个数
    const allStrLength = []
    // 保存关键字
    const tartTag = await readline();
    let TLV_code_stream = (await readline()).split(' ');

    const tagMap = new Map()
    let currentTagIndex = ''
    let currentTagValue = []


    do {
        // 取出第一个作为map的值
        currentTagIndex = TLV_code_stream.shift();
        // tag长度为两个字节
        let currentLength = TLV_code_stream.splice(0, 2).map(item => item.split('').reverse().join('')).join('').split('').reverse().join('')
        tagLength = parseInt(currentLength, 16)
        currentTagValue = TLV_code_stream.splice(0, tagLength);
        tagMap.set(currentTagIndex, {
            length: tagLength,
            value: currentTagValue
        })

    } while (TLV_code_stream.length > 0)


    // console.log(tagMap)
    console.log(tagMap.get(tartTag).value.join(' '))


})();
相关推荐
无限码力14 天前
2026最新华为OD机试新系统 机考真题考点分类 + 备考策略
华为od·华为od机考·华为od机试·华为od机试新系统真题·华为od机试备考策略·华为od机考真题考点详解
TechPioneer_lp21 天前
就业指导|中九非科班毕业,华为 OD 做 Java 后端想转 C++,能找到深度学习挂钩的岗工作吗?
java·c++·华为od·华为·就业指导·校招指导
无限码力22 天前
华为OD机试真题 新系统-等距二进制判断(C/C++/Py/Java/Js/Go)
华为od·华为od机考·华为od机试真题·华为od机试·华为od机试题库·华为od机试新系统真题
largecode1 个月前
怎么让手机显示公司名?来电显示公司名称认证实现品牌外显
linux·ubuntu·华为od·华为·智能手机·华为云·harmonyos
无限码力1 个月前
华为OD新系统机试真题 - 日志文件异常检测
华为od·华为od机考·华为od机试真题·华为od上机考试真题·华为od机考真题·华为od新系统机试真题·华为od新系统机试
无限码力2 个月前
2026最新华为OD新系统机试解析 + 最新题库 + 备考策略
华为od·华为od机考·华为od机试真题·华为od机试·华为od新系统机试真题·2026华为od新系统机试题库·华为od机考题库
无限码力2 个月前
华为OD机试真题 新系统 - API请求日志去重分析 (C/C++/Py/Java/Js/Go)
华为od·华为od机试真题·华为od上机考试真题·华为od机考真题·华为od4月15号机试真题·华为od新系统真题
无限码力2 个月前
华为OD技术面真题 - Python开发 - 4
python·华为od·华为od技术面真题·华为od面试八股文·华为od面试真题·华为odpython开发真题·华为od技术面题目
无限码力2 个月前
华为OD机试真题 新系统 - 直捣黄龙 (C/C++/Py/Java/Js/Go)
华为od·华为od机试真题·华为od上机考试真题·华为od机考真题·华为od新系统机试真题·华为od4月8号机试真题
无限码力2 个月前
华为OD技术面真题 - JAVA开发- spring框架 - 7
java·开发语言·华为od·华为od面试真题·华为odjava八股文·华为odjava开发题目·华为odjava开发高频题目