【华为OD机试真题 C++】TLV解析 【2022 Q4 | 100分】

news2024/11/17 15:28:28

题目描述

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

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

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

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

输入描述

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

输出描述

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

示例 1   输入输出示例仅供调试,后台判题数据一般不包含示例

输入

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

输出

32 33

说明

需要解析的信元的Tag是31,从码流的起始处开始匹配,Tag为32的信元长度为1(01 00,小端序表示为1);

第二个信元的Tag是90,其长度为2;第三个信元的Tag是30,其长度为3;

第四个信元的Tag是31,其长度为2(02 00),所以返回长度后面的两个字节即可,即32 33。


样例解释

C++代码实现:

 

#include <bits/stdc++.h>

using namespace std;

#define IOS cin.sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define SZ(x) ((int)(x).size())
typedef pair<int, int> pii;
typedef pair<int, char> pic;
typedef pair<int, string> pis;

void SplitString(string input, vector<int> &output, string pattern);

class Solution {
public:

    // 待实现函数,在此函数中填入答题代码;
    string decodeTLV(string Tag, string TLV)
    {
        string res;
        vector <string> TLV_VEC;
        SplitString(TLV, TLV_VEC, " ");
        map<string, pis> mp;
        int i = 0;
        while (i < TLV_VEC.size())
        {
            string tag = TLV_VEC[i];
            string value;
            int length = stoi(TLV_VEC[i + 2] + TLV_VEC[i + 1], nullptr, 16);
            for (int j = 1; j <= length; j++) {
                value += TLV_VEC[i + 2 + j] + " ";
            }
            mp[tag] = make_pair(length, value);
            i += (length + 3);
        }
        return mp[Tag].second.erase(SZ(mp[Tag].second) - 1);
    }

private:
    void SplitString(string input, vector <string> &output, string pattern)
    {
        string::size_type pos;
        input += pattern;
        for (int i = 0; i < input.size(); i++) {
            pos = input.find(pattern, i);
            if (pos < input.size()) {
                string s = input.substr(i, pos - i);
                if ((s != " ") && (!s.empty())) {
                    output.push_back(s);
                }
                i = pos + pattern.size() - 1;
            }
        }
    }
};

int main()
{
    IOS
    string Tag, TLV;
    cin >> Tag;
    cin.ignore();
    getline(cin, TLV);
    Solution solo;
    cout << solo.decodeTLV(Tag, TLV) << endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习 | 逻辑回归

一.基本原理 面对一个分类问题&#xff0c;建立代价函数&#xff0c;通过优化方法迭代求解出最优的模型参数&#xff0c;然后测试验证我们这个求解的模型的好坏。逻辑回归是一种分类方法&#xff0c;主要用于二分类问题&#xff0c;应用于研究某些事件发生的概率 二.优缺点 …

day28【代码随想录】回溯之组合、组合总和|||、电话号码的字母组合

文章目录前言一、组合&#xff08;力扣77&#xff09;剪枝优化二、组合总和 III&#xff08;力扣216&#xff09;剪枝优化三、电话号码的字母组合&#xff08;力扣17&#xff09;总结前言 1、组合 2、组合总和||| 3、电话号码的字母组合 一、组合&#xff08;力扣77&#xff0…

第1章 计算机组成原理概述

文章目录前言1.0 课程简介1.0.1 课程的地位1.0.2 课程学习思路1.0.3 课程组成1.1 计算机系统简介1.1.1 计算机组成1.计算机的类型2.计算机的组成3.软件组成1.1.2 计算机系统的层次结构1.物理层方面2.程序员角度1.1.3 计算机体系结构与计算机组成1.2 计算机的基本组成1.2.1 冯诺…

esp8266测试1.44英寸TFT屏(驱动7735)的demo

参考这教程: 使用esp8266点亮福利屏型号st7735的1.44的TFT屏 管脚连接&#xff1a; 我的用的TFT1.44寸ST7735&#xff0c;与NodeMCU针脚接线成功连接 VCC——3V GND——G LED——3V CLK——D5 SDI——D7 RS——D6 RST——D4 CS——D8 这里给出常用的屏幕管脚定义 以及esp8266…

女生也能学编程:行政女生转行学编程获13000元薪资

“女生不能学编程” “女生学编程找不到工作” “企业根本不会招女生” …… 这样类似的说法&#xff0c;让非常多的女生放弃了学编程&#xff0c;但达妹今天要明确的说&#xff0c;这种说法是 错误的&#xff01; 只要你愿意改变&#xff0c;有梦想&#xff0c;想追求更好的…

想要快速准备好性能数据?方法这不就来了!

[内部资源] 想拿年薪30W的软件测试人员&#xff0c;这份资料必须领取~ Python自动化测试全栈性能测试全栈&#xff0c;挑战年薪40W 性能测试的一般流程 收集性能需求——>编写性能脚本——>执行性能测试——>分析测试报告——>系统性能调优。 在收集性能需求后…

Spring IOC\AOP\事务\注解

DAY1 一、引言 1.1 原生web开发中存在哪些问题&#xff1f; 传统Web开发存在硬编码所造成的过度程序耦合&#xff08;例如&#xff1a;Service中作为属性Dao对象&#xff09;。 部分Java EE API较为复杂&#xff0c;使用效率低&#xff08;例如&#xff1a;JDBC开发步骤&…

17. 【gRPC系列学习】http2 各类型帧的含义

本节介绍http2有哪些类型的帧以及各帧的主要作用,是rfc7540规范标准定义,文末有参考链接,为后续介绍gRPC帧处理做技术储备。 1. 帧结构 帧长度3个字节 24 bit帧类型1个字节,含义如下:FrameData FrameType = 0x0FrameHeaders FrameType = 0x1FramePriority …

MySQL#4(JDBC常用API详解)

目录 一.简介 1.概念 2.本质 3.优点 4.步骤 二.API详解 1.DriverManager(驱动管理类) 2.Connection 3.Statement 4.ResultSet 5.PreparedStatement 一.简介 1.概念 JDBC就是使用Java语言操作关系型数据库的一套API(Java DataBase Connectivity)Java 数据库连接 2.本…

年货节微信活动有哪些_分享微信小程序商城开发好处

新年临近&#xff0c;又是百姓们囤年货的日子。各行业的微商商城或者线下实体店的商家们&#xff0c;趁此机会别&#xff0c;做一波优惠促销活动&#xff0c;今年的业绩就靠它来个完美的收尾啦&#xff01; 1.类型&#xff1a;转盘拆福袋等抽奖活动 点击对应抽奖按钮&#xff0…

Doo Prime 提供高达 1000 倍杠杆,助您撬动无限机遇

2022 年 11 月 19 日&#xff0c;Doo Prime 正式将全部账户类型的可选杠杆从 1:500 上调至 1:1000 倍&#xff0c;提供更灵活的杠杆选择&#xff0c;让全球客户有机会以更少的资金撬动更高的潜在利润&#xff0c;进一步拓展投资机遇。 *备注&#xff1a;杠杆调整详情请参阅下文…

Sentinel系列——概述与安装1-1

Sentinel系列——概述与安装1-1概述服务雪崩解决方法基本概念资源规则Sentinel 是如何工作的安装Sentinel下载地址启动修改sentinel启动参数设置启动端口设置用户名密码概述 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言…

面试官问 Redis 的数据结构的时候怎么答能加分?

一提到 Redis&#xff0c;我们的脑子里马上就会出现一个词&#xff1a;“快。”但是你有没有想过&#xff0c;Redis 的快&#xff0c;到底是快在哪里呢&#xff1f;实际上&#xff0c;这里有一个重要的表现&#xff1a;它接收到一个键值对操作后&#xff0c;能以微秒级别的速度…

【代码随想录】鱼与钰遇雨数据结构与算法刷题笔记

代码随想录 https://www.programmercarl.com/ 编程素养 代码风格 C代码风格参考google C style Guide 我使用的是驼峰命名法&#xff0c;其中空格留白的规则如下例&#xff1a; class Solution { public:void moveZeroes(vector<int>& nums) {int slowIndex 0…

化妆品商城小程序制作步骤_分享化妆品商城小程序开发好处

第一&#xff0c;用套餐做团购活动&#xff0c;主打节日套餐 随着疫情的反反复复&#xff0c;越来越多的用户都减少出门&#xff0c;那么就会减少到线下门店选购商品的机会&#xff0c;那么有一款化妆品商城小程序就可以直接在手机上下单&#xff0c;非常方便&#xff0c;那么我…

清华百度升级AIR白皮书2.0:发布车路协同重大突破

12月23日&#xff0c;全球首份车路协同自动驾驶技术创新白皮书《面向自动驾驶的车路协同关键技术与展望》升级发布2.0版(以下称“白皮书2.0”)&#xff0c;并向全行业公开征集意见。 该白皮书是全球车路协同技术研究领域最权威的报告之一&#xff0c;由张亚勤院士牵头&#xff…

DELMIA软件:机器人工作站中旋转台外围设备的运动仿真操作方法

目录 任务介绍 旋转台设备运动机构分析 旋转台设备模型导入与装配 旋转台设备示教编程 设备工艺添加与工艺序列设计 仿真运行 任务介绍 在DELMIA软件中制作旋转台设备运动机构&#xff0c;并实现机器人与旋转台设备联合运动虚拟仿真。仿真过程中&#xff0c;旋转台设备自…

机器学习肝炎预测模型machine learning for hepatitis prediction model

作者Toby&#xff0c;来自机器学习肝炎预测模型 肝炎是由细菌、病毒、寄生虫、酒精、药物、化学物质、自身免疫等多种致病因素引起的肝脏炎症的统称。儿童及成年人均可患病&#xff0c;病毒感染导致的病毒性肝炎较为常见。 由于过度饮酒、吸入有害气体、摄入受污染的食物、泡菜…

代码随想录刷题记录 day51 下一个更大元素II + 接雨水

代码随想录刷题记录 day51 下一个更大元素II 接雨水 503. 下一个更大元素 II 思想 和每日温度的思路是一样的&#xff0c;单调栈中存放的是元素的下标&#xff0c;需要学习的是如何模拟遍历两次数组。 for(int i1;i<nums.length*2;i){ ​ //这其中所有有关于i的 都用i …

不学PPMT,做自己,FARMER BOB的“高山之道”和破局之路

1999年&#xff0c;有着“潮流玩具教父”之称的中国香港艺术家Michael Lau&#xff08;刘建文&#xff09;&#xff0c;率先开创一种艺术玩具&#xff0c;将艺术、设计、潮流、绘画、雕塑等多元素理念融入玩具载体。 后来&#xff0c;大家都把这种玩具称为“潮玩”&#xff0c…