0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

协议中遇到字节高低位转换的问题如何实现

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:李肖遥 2020-12-06 09:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近的协议中遇到字节高低位转换的问题,于是偷懒上网查看,遇到类似的问题,也认识一个新的名字,叫做蝶式交换

问题是这样子的

协议要求字节低位在左,高位在右,对每个字节做转换处理,逐个交换其高低位,例如11010001,经过0->7,1->6,2->5,3->4对应位的交换,变成10001011。

这里就需要有位操作的知识,参考位操作运算有什么奇技淫巧?(附源码)

这里我们以8位数据高低位转换为例子:

熟悉位操作,上述代码实现起来就比较简单。在嵌入式开发中这类问题通常使用蝶式交换法和查表法来实现。

高阶实现?

查表法就是将一些值存到内存中,在需要计算的时候查表,但是这种方法会占用额外的存储空间。

所以这里主要介绍一下蝶式交换法,我们以8位数据转换为例。

假设原始序列为:1 2 3 4 5 6 7 8

目标序列为:8 7 6 5 4 3 2 1

那么流程图如下:

由此完成了整个位的逆序转换,同样以11010001为例,下面是具体的实现代码:

交换字节的高低位并不是一个很常见的问题,遇到该问题时,需要经过仔细的分析,加上对C语言位操作的熟练掌握,就能够很好的解决这一类的问题。

扩展

那么我们将其扩展到16位半字数据的高低位转换。

其实原理是跟8位的时候是一样的,采用简单的移位方式对数据的高低位进行转换。熟悉位操作的话代码就相对简单了。

下面是对该思路的具体实现。

同样的所谓的蝶式交换法,我引用了字节交换法的例子,我们可以演算一下:

假设原始序列为:a b c d e f g h i j k l m n o p

目标序列为:p o n m l k j i h g f e d c b a

那么流程图如下:

由此完成了整个位的逆序转换,完成了算法的拓展,以1001011001011011为例,下面是具体的实现代码:

对于这种交换位的问题,在嵌入式开发中会经常遇到,熟悉掌握位操作还有调试手段很重要。熟练的利用好C语言的移位操作,就能快速的解决此类问题。

总结

上面的问题关键还是位操作的灵活妙用,其次是写了两个打印二进制的函数,方便使用,代码可以直接使用,调试不易,欢迎点赞,在看,转发也是厚爱,我们下一期,再见!

责任编辑:xj

原文标题:嵌入式编程中的高低位交换如何实现?

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20679

    浏览量

    337232
  • 编程
    +关注

    关注

    90

    文章

    3724

    浏览量

    97453

原文标题:嵌入式编程中的高低位交换如何实现?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    协议转换器是什么?一篇看懂核心价值

    协议转换器,又称协议转换网关,是一种能在不同通信协议、数据格式或语言之间,实现数据双向
    的头像 发表于 04-01 14:17 227次阅读
    <b class='flag-5'>协议</b><b class='flag-5'>转换</b>器是什么?一篇看懂核心价值

    Modbus协议转换器是什么?有什么推荐?

    在工业自动化与物联网深度融合的当下,Modbus协议转换器已成为连接异构设备、实现数据互通的核心工具。它通过协议翻译与数据格式转换,打破不同
    的头像 发表于 03-27 15:31 431次阅读
    Modbus<b class='flag-5'>协议</b><b class='flag-5'>转换</b>器是什么?有什么推荐?

    工业协议转换:耐达讯自动化手把手教你实现CC-Link IE转Modbus RTU通讯

    统一管控的关键挑战。本文将以耐达讯自动化CC-Link IE转Modbus RTU的解决方案为例,详解如何通过协议转换网关,打破壁垒,实现新旧设备的无缝集成。 一、核心原理:协议
    的头像 发表于 03-26 15:07 1194次阅读
    工业<b class='flag-5'>协议</b><b class='flag-5'>转换</b>:耐达讯自动化手把手教你<b class='flag-5'>实现</b>CC-Link IE转Modbus RTU通讯

    工业协议转换网关哪个好用?有什么推荐?

    智能化转型的首要难题。工业协议转换网关(Protocol Conversion Gateway)正是解决这一难题的关键设备,它充当着“翻译官”和“交通枢纽”的角色,能够实现不同协议间的
    的头像 发表于 01-20 11:44 729次阅读
    工业<b class='flag-5'>协议</b><b class='flag-5'>转换</b>网关哪个好用?有什么推荐?

    嵌入式的浮点型数据转换字节类型的三种方法

    单精度浮点型变量 double b; // 声明双精度浮点型变量 单精度(float型)与双精度(double型)的区别 float 单精度浮点数内存占 4 个字节,用 32 位二进制描述
    发表于 01-07 06:28

    嵌入式编程中高低位交换如何实现

    问题是这样子的: 协议要求字节低位在左,高位在右,对每个字节转换处理,逐个交换其高低位,例如1
    发表于 12-24 08:25

    SWD调试通信协议

    给目标芯片 SWDIO 为双向数据信号,由调试器和目标芯片双向分时驱动 协议定义了长度为一个 SWCLK 周期的收发端转换时间,在收发端转换时间内,调试器和目标芯片都不驱动SWDIO,SWDIO 由上拉
    发表于 12-22 14:46

    为什么会有小端字节

    答案是,计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。 但是,人类还是习惯读写大端字节
    发表于 12-15 06:24

    RS485转EtherCAT协议转换网关详细解析

    EtherCAT至RS232/RS485协议转换网关在工业通信架构承担着关键角色,其核心功能在于实现高速实时工业以太网与经典串行通信之间的无缝协议
    的头像 发表于 11-08 16:30 859次阅读
    RS485转EtherCAT<b class='flag-5'>协议</b><b class='flag-5'>转换</b>网关详细解析

    用于各种设备协议间做报文转换的网关是什么

    功能是实现不同协议格式的报文(数据)在传输过程的解析、转换和转发。 一、协议转换网关的核心作用
    的头像 发表于 08-11 14:08 1229次阅读
    用于各种设备<b class='flag-5'>协议</b>间做报文<b class='flag-5'>转换</b>的网关是什么

    激光焊接技术在焊接高低压断路器工艺的应用

    高低压断路器作为电力系统的核心保护装置,其内部关键部件的连接质量直接影响着设备的开断能力、载流稳定性及长期运行可靠性。传统的焊接方法在应对精密导电回路、密封壳体以及微型化组件时,常遇到热损伤、变形
    的头像 发表于 08-04 14:27 764次阅读
    激光焊接技术在焊接<b class='flag-5'>高低</b>压断路器工艺<b class='flag-5'>中</b>的应用

    Modbus协议转换:让工业设备轻松“对话”

    在工业自动化,Modbus协议是设备通信的关键。本文将聚焦于Modbus协议的串口与网口转换需求,并通过ZLG致远电子PXB-6030D的案例,展示如何轻松
    的头像 发表于 07-15 11:47 871次阅读
    Modbus<b class='flag-5'>协议</b><b class='flag-5'>转换</b>:让工业设备轻松“对话”

    Ethernet IP转Modbus网关在热泵机组协议转换技术实现

    ,例如空调热泵机组的控制与监控,我们可能需要将这两种协议进行转换,此时便需要借助开疆智能Ethernet IP转Modbus网关KJ-EIP-101来实现数据和控制信号的无缝对接。来了解一下
    的头像 发表于 06-04 17:22 632次阅读
    Ethernet IP转Modbus网关在热泵机组<b class='flag-5'>中</b>的<b class='flag-5'>协议</b><b class='flag-5'>转换</b>技术<b class='flag-5'>实现</b>

    Profinet转DeviceNet网关协议转换的技术实现与应用分析

    Profinet网关模块之Profinet从站转DeviceNet主站协议转换方案说明,如下: 石家庄某生产车间内,原有现场设备包含配备了DeviceNet通讯卡的艾默生变频器、AB的软启动器,它们
    的头像 发表于 05-29 09:16 1187次阅读
    Profinet转DeviceNet网关<b class='flag-5'>协议</b><b class='flag-5'>转换</b>的技术<b class='flag-5'>实现</b>与应用分析

    使用FX3测试程序的数据流时,遇到了每8个字节重复的场景,是什么原因导致的?

    我在使用 FX3 测试程序的数据流时,遇到了每 8 个字节重复的场景。
    发表于 05-21 06:59