华为OD E卷(100分)53-TLV解码

devtools/2025/1/17 12:05:41/

前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

        TLV编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value表示信元的值。

        码流以某信元的Tag开头,Tag固定占一个字节,Length固定占两个字节,字节序为小端序。

        现给定TLV格式编码的码流,以及需要解码的信元Tag,请输出该信元的Value。

        输入码流的16进制字符中,不包括小写字母,且要求输出的16进制字符串中也不要包含小写字母;码流字符串的最大长度不超过50000个字节。

输入描述

  • 输入的第一行为一个字符串,表示待解码信元的Tag;
  • 输入的第二行为一个字符串,表示待解码的16进制码流,字节之间用空格分隔。

输出描述

        输出一个字符串,表示待解码信元以16进制表示的Value。

示例

输入

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

输出

2 33

说明

需要解析的信元的Tag是31,
从码流的起始处开始匹配,
第一个信元的Tag是32,信元长度为1(01 00,小端序表示为1);
第二个信元的Tag是90,其长度为2;
第三个信元的Tag是30,其长度为3;
第四个信元的Tag是31,其长度为2(02 00),
所以返回长度后面的两个字节即可,即32 33。

解题思路

  1. 小端序表示的Length

    • 小端序表示法即低字节在前,高字节在后。比如长度为 01 00,表示的实际长度是 1(即 0001)。而 02 00 表示长度 2(即 0002)。
  2. Tag 的固定长度是1字节, Length 固定是2字节,而 Value 的长度是根据 Length 来决定的。

题解

Java实现

java">package huawei.e100;import java.util.Scanner;/**
* @author arnold
* @date 2025年1月13日
* TLV 解码
*/
public class T53 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {String tag = sc.nextLine();String[] data = sc.nextLine().split(" ");int index = 0;while(index <  data.length) {String itag = data[index];int l = Integer.parseInt(data[index + 2] + data[index + 1], 16);if (tag.equals(itag)) {for(int j= index+3; j< index+3+l && j< data.length; j++) {System.out.print(data[j] + " ");}System.out.println();break;} else {index = index + 3 + l;}}}}}


http://www.ppmy.cn/devtools/151268.html

相关文章

传统数据湖和数据仓库的“中心化瓶颈”

传统数据湖和数据仓库的**“中心化瓶颈”**&#xff0c;主要是由于其架构设计和治理模式的局限性&#xff0c;无法有效应对现代企业中数据规模的快速增长和组织复杂性。以下是具体表现&#xff1a; 1. 单点瓶颈&#xff08;Single Point Bottleneck&#xff09; 传统数据湖/仓…

一、1-2 5G-A通感融合基站产品及开通

1、通感融合定义和场景&#xff08;阅读&#xff09; 1.1通感融合定义 1.2通感融合应用场景 2、通感融合架构和原理&#xff08;较难&#xff0c;理解即可&#xff09; 2.1 感知方式 2.2 通感融合架构 SF&#xff08;Sensing Function&#xff09;&#xff1a;核心网感知控制…

ASP.NET Core - 依赖注入(三)

ASP.NET Core - 依赖注入&#xff08;三&#xff09; 4. 容器中的服务创建与释放 4. 容器中的服务创建与释放 我们使用了 IoC 容器之后&#xff0c;服务实例的创建和销毁的工作就交给了容器去处理&#xff0c;前面也讲到了服务的生命周期&#xff0c;那三种生命周期中对象的创…

【深度学习】Pytorch:自实现残差网络

ResNet&#xff08;残差网络&#xff09;是由何凯明等人在2015年发表的论文《深度残差学习用于图像识别》中提出的一种开创性深度学习架构。它在ILSVRC 2015分类任务中获胜&#xff0c;并解决了深度神经网络中的退化问题&#xff0c;使得训练数百甚至数千层的网络成为可能。 残…

用 Python 从零开始创建神经网络(二十):模型评估

模型评估 引言 引言 在第11章《测试或样本外数据》中&#xff0c;我们讨论了验证数据和测试数据之间的区别。对于目前的模型&#xff0c;我们在训练过程中进行了验证&#xff0c;但目前没有一个好的方法来对测试数据运行测试或进行预测。首先&#xff0c;我们将在Model类中添加…

C#局部函数 VS Lambda表达式

一、引言 在 C# 的编程世界里&#xff0c;我们常常会遇到各种实现功能的方式&#xff0c;其中 Lambda 表达式和局部函数都是非常强大的特性。Lambda 表达式自诞生以来&#xff0c;凭借其简洁的语法和强大的功能&#xff0c;深受广大开发者的喜爱&#xff0c;尤其是在处理集合操…

springboot中创建自定义注解和AOP

一、自定义注解的创建 在 Java 中&#xff0c;自定义注解使用 interface 关键字来定义。例如&#xff0c;我们创建一个名为 LogExecutionTime 的自定义注解&#xff0c;用于标记需要记录执行时间的方法&#xff1a; import java.lang.annotation.ElementType; import java.lan…

[NOIP2007 提高组] 矩阵取数游戏

[NOIP2007 提高组] 矩阵取数游戏 显示标签 题目讨论 题目统计 全部提交 时间限制&#xff1a;C/C 1000MS&#xff0c;其他语言 2000MS 内存限制&#xff1a;C/C 256MB&#xff0c;其他语言 512MB 难度&#xff1a;提高/省选- 分数&#xff1a;100 描述 帅帅经常跟同学玩一…