调试华为MML协议备忘
花了几天时间终于调试通了,中间走了不省弯路,对协议中一些字段的理解有些偏差。协议中“校验和”字段耗费时间最长,校验和字段计算方法描述为将“消息头+会话头+事务头+操作消息”按32位异或,最后结果取反,表示成16进制,长度为8字节。这个描述刚看上去,确实头疼,想的很复杂,但最后正确的理解却很简单。32位即4个字节,将 消息头+会话头+事务头+操作消息拼成一个byte[],然后每4个字节为一组,一组一组的进行异或,即前两组异或结果与后一组异或,最终得出结果,再取反。下面为
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
其实就是这么简单,有种恍然大捂的感觉。协议中还有一个比较让人头疼的描述:16进制表示的16位或32位整数,高8位位组在前,低8位位组在后。举个例子:
int n = 148; // 转换成4字节,16进制
int hi = n >> 8 ; //高16位
int lo = n & 0x00ff; //低16位
String hig = Integer.toHexString(hi); //长度不足,再补0
String low = Integer.toHexString(lo); // 16进制
----------------------------------------------------------------
这样148按要求就转换成了0094
写此备忘,以帮助以后调试此协议的其他朋友。无助的感觉却实很不好受!
调试华为MML协议备忘相关推荐
- Nancy之结合TinyFox调试备忘
原文:Nancy之结合TinyFox调试备忘 最近把一个小项目的数据库换成MongoDB,同时用了MongoRepository 这个开源组件来对数据进行操作. 通过NuGet安装之后,它会自动在we ...
- linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘
[linux学习笔记]之一:ubuntu ch340调试备忘 已有 2183 次阅读2016-11-8 21:52 |个人分类:linux 最近迷上了Linux,入了一块板.电脑使用win7+ubun ...
- 华为如何在手机桌面显示备忘录的备忘内容
在华为手机上可以使用很多好用的备忘录工具,比如系统自带的备忘录,再比如,支持在其他手机端共享备忘录事项的云便签.这些好用的备忘录功能强大,不仅能打开应用查看备忘内容,还支持添加窗口小工具,让备忘录内容 ...
- MTK 10A 之前的备忘
MTK 10A 之前的备忘 mmi_idle_exe_callback 进入待机前的准备,检查是否有新短信.未接来电(mmi_nmgr_entry_default_idle) 等 NetWorkAt ...
- CSP浏览器安全策略备忘
挺久之前过了一遍CSP的安全策略,很多人把它喻为XSS攻击的终结者,因为这种策略不再像传统只靠各种正则和特征匹配来识别跨站攻击Payload,而是直接从协议层把一些存在安全隐患的用法默认给干掉了,把同 ...
- 前端那些年----Webstream快捷键备忘(mac)
Webstream快捷键备忘(mac) 友情提示:webstream内置了一个强大的插件--Emmet插件.其用法请自行搜索. 其他插件 Markdown--支持md,点击下面的Text/Previe ...
- [原]TCP/UDP使用细节备忘
[原]TCP/UDP使用细节备忘 首先,TCP和UDP的基本区别是TCP提供可靠的面向连接的流传输:UDP提供不可靠的基于数据包的传输: 所谓可靠就是说发送端调用send后,数据就一定会发送给接收端. ...
- Spring Spring MVC Hibernate 整合备忘
以下为此三种框架整合配置的详细备注,以及部分问题备忘 项目结构和配置文件可访问 Github 查看 1. pom.xml 尽量使用 Maven 管理项目依赖以减少包引入时的麻烦,以及避免跨开发工具问题 ...
- vf更改当前路径_这份 window.location 备忘单,让你更有条理解决地址路径问题!...
如果你想获取站点的URL信息,那么window.location对象什么很适合你!使用其属性获取有关当前页面地址的信息,或使用其方法进行某些页面重定向或刷新? https://segmentfault ...
- 20多个Maven命令和选项(备忘单)
If you are working on Java, you must know Maven. Maven is the most popular project and dependency ma ...
最新文章
- python猿辅导_如何用数据分析方法剖析“猿辅导”K12课程
- 从代码角度揭示:华为鸿蒙的“套壳”真相!
- mpvue微信小程序动画_入门微信小程序
- Script:Generate A DDL Script For A Table
- 【codevs3304】水果姐逛水果店Ⅰ,线段树练习
- 知乎推荐算法工程师面经
- Linux登录公开ftp命令,linux下登录ftp, lftp命令详解
- 从turtlesim到贪吃蛇……(补充)
- FRP搭建内网穿透(亲测有效)
- Mybatis中如何实现一对一,一对多的关联查询?
- 利用nslookup命令查看MX记录、A记录、CNAME记录和NS记录
- 纱织小姐雅典娜_用雅典娜分析巧克力
- 情人节 礼物TOP10
- 【转载】讲真,认知几乎是人和人之间唯一的本质差别。
- 让你的代码只做一件事情
- 高中计算机专业班主任工作总结,大学班主任工作总结5篇
- ZeroTier-One配置moon心得
- element-ui中el-cascader级联选择器多选判断是否是全选
- 什么是GHZ?炫云到底是怎么收费的?
- Android系统移植与调试之如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关
热门文章
- gds文件 导出_cadence virtuoso 批量导出gds方法
- The application could not be installed: INSTALL_FALLED_INTERNAL_ERROR
- php去除图片水印源代码,基于python的图片修复程序(实现水印去除)
- css3学习以及移动端开发基本概念的思考
- UVA - 10041 Vito's Family (中位数)
- Annoying Present CodeForces - 1009C
- hdu 5296 Annoying problem (LCA)
- UVA 12304 计算几何+圆模板
- 在 MS Excel 中做t-test时 Hypothesized Mean Difference 是什么意思
- PS证件照蓝底转白底红底转白底