【python】根据给定的协议,解析一个hexdump 字符串

news/2025/9/30 17:50:00/文章来源:https://www.cnblogs.com/fireblackman/p/19121559

一、场景

  在于客户进行协议交互时,对方给出了协议和一串hex dump字符串, 通过python脚本解析接口的各个字段

 

 

二、struct库的介绍

官方的文档

https://docs.python.org/zh-cn/3/library/struct.html

2.1了解大序端和小序端

image

 原生字节顺序可能为大端序或小端序,具体取决于主机系统。

例如,Intel x86, AMD64 (x86-64) 和 Apple M1 是小端序的;IBM z 和许多旧式架构则是大端序的。

请使用 sys.byteorder 来检查你的系统字节顺序。

 

2.2格式字符

image

 

 

三、脚本编写

import struct
import chardet

hex_string = "AA 44 12 1C B9 05 00 A0 7E 00 00 00 71 A0 D7 08 90 28 12 17 00 00 00 00 E2 54 16 37 01 00 00 00 35 00 00 00 88 33 13 99 DA 28 3F 40 72 0B 6A 50 6B 4B 5E 40 00 00 70 FD 1B 69 39 40 56 9F 2A 41 CF 06 CE FC CD 22 5B BF BC 59 D9 24 26 C0 41 3F 99 39 74 49 F3 FC 70 3F 75 B4 32 2C 45 C6 E2 BF C8 A9 48 E8 93 10 0D 40 CB AC A2 59 E1 25 63 40 AB ED 25 3E 61 56 22 3E 9D 7D 22 3E 1D 15 1F 3C 87 28 1F 3C 58 E2 35 3B 19 52 2F 3E 3E 7A E0 3D 4A DA AA 40 01 00 00 00 00 00 8E 8C 49 9E 0A"
# 去除空格并转换为二进制
binary_data = bytes.fromhex(hex_string.replace(' ', ''))

# 输出二进制数据(以字节形式)
result = chardet.detect(binary_data)
print(binary_data, len(binary_data))print("Sync:", struct.unpack('<c', binary_data[0:1])[0]) print("Sync:", struct.unpack('<c', binary_data[1:2])[0]) print("Sync:", struct.unpack('<c', binary_data[2:3])[0]) print("Header Length:", struct.unpack('<B', binary_data[3:4])[0])

这样我们就可以解析出来协议对应每个字段的值

 

参考链接:

https://docs.python.org/zh-cn/3/library/struct.html

 

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

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

相关文章

spring boot 切面的机制和作用原理

spring boot 切面的机制和作用原理切面(Aspect)的核心机制就是拦截(Interception),但切面的概念比单纯的拦截更加丰富和系统化。 让我用一个更准确的比喻来解释: 🎯 拦截 vs 切面特性 单纯的拦截(Interceptio…

wordpress首页显示文章数量深圳谷歌seo培训班

引言 ChatGPT4相比于ChatGPT3.5,有着诸多不可比拟的优势&#xff0c;比如图片生成、图片内容解析、GPTS开发、更智能的语言理解能力等&#xff0c;但是在国内使用GPT4存在网络及充值障碍等问题&#xff0c;如果您对ChatGPT4.0感兴趣&#xff0c;可以私信博主为您解决账号和环境…

建设银行重庆市分行官方网站vs 2008 手机网站开发

目录 概述概念适用场景结构类图 衍化过程业务需求基本的数据访问程序工厂方法实现数据访问程序抽象工厂实现数据访问程序简单工厂改进抽象工厂使用反射抽象工厂反射配置文件衍化过程总结 常见问题总结 概述 概念 抽象工厂模式是一种创建型设计模式&#xff0c;它提供了一种将相…

读博期间的工作节奏与身心状态管理经验总结

7-9三个月里连着处理了很多事情的ddl,总结下来是写了两篇论文的大修,一篇会议还有一篇论文的小修。总算是强撑到告一段落,惯例的做一些复盘和总结。 如题,主要是想做两方面问题的分析,第一个是如何有效的管理工作…

郑州网站顾问热狗网淮安市交通建设局网站

文章目录 1. 创建索引2. 插入模拟数据Painless 脚本的基本特点&#xff1a;Painless 脚本的常见用途1. 脚本查询和过滤示例&#xff1a;基于脚本的查询 2. 脚本字段示例&#xff1a;脚本字段 3. 聚合中的脚本示例&#xff1a;脚本聚合 4. 文档更新中的脚本示例&#xff1a;文档…

【Rust GUI开发入门】编写一个本地音乐播放器(7. 制作歌词显示面板) - Jordan

目的是要制作一个这样的面板显示歌词:水平布局:左边30%显示专辑封面 右边70%显示歌词歌词仍然使用ListView来构建,跟前文的歌曲列表一样,代码如下: export component LyricsPanel inherits Window {in property &…

长沙做网站美工的公司网站制度建设模板

当web Service 和 Manifest 被浏览器安装完后&#xff0c;正常情况下&#xff0c;浏览器会提醒用户可将网页安装到桌面。但是通常浏览器都会限制提醒。这时候我们需要手动唤醒浏览器询问用户是否安装到桌面 beforeinstallprompt beforeinstallprompt 事件 window.addEventListe…

做塑料的网站名字潍坊企业网站制作

使用 Redis 可以优化性能&#xff0c;但是存在 Redis 的数据和数据库同步的问题&#xff0c;这是我们需要关注的问题。假设两个业务逻辑都是在操作数据库的同一条记录&#xff0c;而 Redis 和数据库不一致。 Redis 和数据库不一致 在图中&#xff0c;T1 时刻以键 key1 保存数…

深圳商城网站设计公司数字化营销模式及特点

YOLO TT100K: 基于YOLO训练的交通标志检测模型 在原始代码基础上&#xff1a; 修改数据加载类&#xff0c;支持CoCo格式&#xff08;使用cocoapi&#xff09;&#xff1b;修改数据增强&#xff1b;validation增加mAP计算&#xff1b;修改anchor&#xff1b; 注: 实验开启weig…

html5 自适应网站燕郊建设局网站

目录 打包/解包 作用 zip -r选项 unzip -d选项 如果不使用递归压缩 -l / -v选项 tar 介绍 选项 示例 打包/解包 作用 使多个文件变成一个文件,不易造成数据缺失使下载时间变短 zip 将目录或文件压缩成zip格式 -r选项 递归式压缩某目录及其所有子目录中的文件 如果不…

基于内容可信空间的医疗行业机遇研究报告

基于内容可信空间的医疗行业机遇研究报告pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

建立网站的费用襄阳网站seo

文章目录 概述一、app应用安装白名单核心代码二、app应用安装白名单核心功能分析三、代码实战1.先导入所需要的包2.添加获取白名单方法3.添加限制白名单方法4.上层使用PS:查看当前白名单 总结 概述 在13.0系统rom定制化开发中&#xff0c;客户需求要实现应用安装白名单功能&am…

2025 年智能门锁厂家最新推荐榜单:涵盖高端 / 猫眼 / 家用 / 人脸 / 续航 / 掌静脉等多类型,优质厂家推荐助你选对产品

随着智能家居普及,智能门锁成为家庭安全刚需,但当前市场乱象频发。众多品牌涌入导致产品质量悬殊,部分产品存在指纹识别失误、续航缩水、安全漏洞等问题,甚至有小品牌为降低成本省去核心防护技术,让消费者陷入 “…

2025 年成型机厂商最新权威推荐排行榜:冷弯 / 光伏支架 / 门业等设备企业精度耐用性测评底樑/光伏支架/C型钢/彩钢瓦/快速门成型机厂商推荐

在当前制造业加速升级的背景下,成型机作为建材、门业、新能源等领域的核心生产装备,其品质直接决定下游企业的生产效率与产品竞争力。然而,市场上成型机厂商数量众多,产品质量参差不齐:部分厂商缺乏核心技术,设备…

个人建什么样的网站怎么做网页快照

文章目录 Rust语言之属性宏&#xff08;Attribute Macro&#xff09;derive Rust语言之属性宏&#xff08;Attribute Macro&#xff09;derive 属性宏是一种基于属性的宏&#xff0c;用于修改、扩展或注解 Rust 代码。它们通常用于为函数、结构体、枚举、模块等添加元数据或自…

自己做的网站点进去很卡即时聊天app开发

摘 要&#xff1a;随着电力需求的不断增加&#xff0c;电力系统供电可靠性要求越来越高&#xff0c;许多供电系统已具备两回或多回供电线路。备用电源自动投入装置可以有效提高供电的可靠性&#xff0c;该类装置能够在工作电源因故障断开后&#xff0c;自动且迅速地将备用电源投…

.Net Core MVC + Vue + SignalR 实现 后端数据主动推送到前端

1. 安装 Microsoft.AspNetCore.SignalR 2. 配置 SignalR 服务public class RandomNumberHub : Hub {/// <summary>/// 前端推送到后端/// </summary>public async Task SendEvent(string number){await C…

2025 布袋包装厂家最新推荐榜:自贸区实力厂商领衔,含手提袋/帆布袋/无纺布袋,年销 500 万级生产商精选

在 “双碳” 目标与 “限塑令” 深化实施的双重推动下,布袋包装市场需求年增速超 20%,但行业乱象始终制约采购决策效率。据调研,67% 的企业曾遭遇样品与成品不符、交货延期等问题,原材料掺假、定制能力不足、环保资…

做网站用的图片分辨率光谷软件园 网站建设

想要生活在幸福的职场中&#xff0c;并非无技巧可寻。以下9个小技巧&#xff0c;帮你收获职场幸福。第1招&#xff1a;按部就班地行动 事业成功的人往往耐得住寂寞&#xff0c;在那些看似程式化的进程当中寻找到快乐&#xff0c;他们是善于自我控制的人&#xff0c;可以让时间听…

做网站用什么配置的笔记本专业做家电经销的网站

目录 一. 铺垫性介绍 1.1 傅里叶级数 1.2 傅里叶矩阵的来源 二. 格基与傅里叶矩阵 2.1 傅里叶矩阵详细解释 2.2 格基与傅里叶矩阵 写在前面&#xff1a;有关傅里叶变换的解释太多了&#xff0c;这篇博客主要总结傅里叶矩阵在格密码中的运用。对于有一定傅里叶变换基础的同…