AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0001. IP报文头解析问题

中等通过率 62% · 提交 250 · 通过 156
模拟字符串数学

小慕正在处理一个 IP 报文头解析项目,现在他拿到了一份十六进制格式的 IP 报文头数据,需要从中解析并输出其中的 、标志位以及目的 IP 地址,用逗号分隔。 IP 报文头信息依次包含多个字段,其中标识(16 位)和目的 IP 地址(32 位)是重点。输入数据为合法的十六进制 IP 报文头,固定长度为 59 个字符,每两个十六进制数字表示一个字节,字节之间以单空格分隔。 注: - 报文数据为(即高位字节在低地址)。 - 输出的总长度和标志位为十进制整数,目的 IP 地址为(如 `192.168.20.184`)。

提示:带虚线的词点一下有通俗解释。

输入描述

第一行输入一个合法的十六进制 IP 报文头字符串 `header`,固定长度为 59 个字符,每两个十六进制数字表示一个字节,字节之间以单空格分隔。 1. `header` 的长度固定为 59 个字符,且合法。 2. 所有数据均为大端序。

输出描述

输出一个字符串,包含解析后的**总长度**、**标志位**和**目的 IP 地址**,中间用逗号分隔。

示例

示例 1

输入

45 00 10 3c 7c 48 20 03 80 06 00 00 c0 a8 01 02 c0 a8 14 b8

输出

4156,1,192.168.20.184

示例 2

输入

4b ba 0d 15 d0 42 16 bc 50 25 38 33 cb e0 77 ed 56 a4 30 46

输出

3349,0,86.164.48.70

示例 3

输入

f7 87 78 be cf bf ae 9e d6 bc b1 5f 38 2c 07 37 95 f8 32 c5

输出

30910,5,149.248.50.197

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
IP报文头结构解析示例 版本 首部长度 总长度 标识 标志 (3位) 片偏移 生存时间 协议 首部校验和 源IP地址(32位) 目的IP地址(32位) 示例输入:45 00 10 3c 7c 48 20 03 80 06 00 00 c0 a8 01 02 c0 a8 14 b8 总长度:0x103c = 4156 标志:0x20的高3位 = 001 = 1 目的IP:c0 a8 14 b8 → 192.168.20.184 输出:4156,1,192.168.20.184
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「IP报文头解析问题」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。