`
izuoyan
  • 浏览: 9222019 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

异或校验算法的应用

阅读更多

异或交验算法

通过本段程序将通过异或校验算法,对给定的字符串进行获取交验值,并根据一般的数据打包方法把数据加上包头、包尾、交验值和回车换行符,成为数据发送包。

  1. /*--------------------------------------------------------------------------------------
  2. *程序功能:将字符串按照NMEA-0183无线通信协议格式打包函数
  3. *执行条件:通过函数调用
  4. *执行结果:将给定的字符串参数经过异或校验后打包发送
  5. *--------------------------------------------------------------------------------------*/
  6. voidCSerialPortTestDlg::SendNMEAData(CString&strData)
  7. {
  8. charchecksum=0,cr=13,ln=10;
  9. charch,cl;//校验位的高四位和第四位;
  10. //例如:校验值为5D,则ch='5';cl='D';
  11. for(inti=0;i<strData.GetLength();i++)
  12. {
  13. checksum=checksum^strData[i];//进行异或交验取值
  14. }
  15. /*--------------------------------------------------------------------------------------
  16. *功能:(下列代码)为了取得的异或值能够显示为字符
  17. *过程:先将异或后的一个字节,高四位和第四位分开,根据
  18. *对应的16进制数,显示出其字符。例如0000,对应16进制的0,
  19. *将会显示字符‘0’,即ASCII的第30个字符,1011对应16进制的B
  20. *将会显示字符‘B’,即ASCII的第65个字符(‘A’后面那个,所
  21. *以计算方法是‘A’+1)
  22. *--------------------------------------------------------------------------------------*/
  23. ch=(checksum>>4)&0x0F;//取高位数;
  24. cl=checksum&0x0F;//取低位数;
  25. if(ch<10));//低于10的数
  26. ch=ch+'0';
  27. else
  28. ch=(ch-10)+'A';);//不低于10的16进制数,如:A、B、C、D、E、F
  29. if(cl<10)
  30. cl=cl+'0';
  31. else
  32. cl=(cl-10)+'A';
  33. CStringstrNMEAData;
  34. //加上包头、包尾、校验值和回车、换行符,形成数据包
  35. strNMEAData='$'+strData+'*'+ch+cl+cr+ln;
  36. m_SerialPort.WriteToPort((LPCTSTR)strNMEAData);//将数据包发送
  37. m_strEditSendMessage.Format("发送数据包:%s",strNMEAData);//显示数据包
  38. UpdateData(FALSE);
  39. }
分享到:
评论

相关推荐

    异或校验算法工具,计算异或校验算法结果

    异或校验算法工具,输出异或校验的结果。

    异或校验算 法的实现 语言VB6.0

    在VB6.0(Visual Basic 6.0)中实现异或校验算法,可以帮助我们确保数据在传输或存储过程中没有错误。下面我们将详细探讨异或校验的基本原理、其在VB6.0中的实现方式以及如何应用。 **异或校验的基本原理:** 异或...

    BCC校验(异或校验)计算

    综上所述,BCC校验(异或校验)是一种实用且高效的错误检测手段,尤其适用于那些对实时性和计算资源有限制的应用。尽管它有其局限性,但在很多实际场景中,它仍然能够满足基本的数据完整性保障需求。

    labview异或BCC校验算法

    用labview实现异或BCC校验算法

    labview异或和校验算法

    首先,你需要创建一个字符串输入控件,用户可以通过这个控件输入需要进行异或校验的ASCII字符串。然后,使用循环结构遍历字符串中的每一个字符,将其转换为ASCII码(即对应的整数值),再进行异或操作。最后,将所有...

    异或校验算法

    异或校验,在数据通信中的一种校验方法,其他校验比如CRC校验,LRC校验,都是比较常见的。

    C# 异或校验含源码

    本资源“C# 异或校验含源码”提供了一个针对GPS通讯协议的校验工具,下面将详细介绍这两个概念及其在实际应用中的使用。 CRC是一种广泛用于检测数字传输或存储数据错误的校验码。它的原理基于多项式除法,通过生成...

    crc 异或校验,crc 异或校验,

    crc 异或校验 c语言 方便移植

    基于labview 的BCC校验 异或校验

    基于labview写的bcc(异或校验)BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后即得到校验码。

    异或校验计算器.zip

    异或校验(XOR Checksum)是一种简单但有效的数据完整性检查方法,广泛应用于通信、存储和编程领域。CRC(Cyclic Redundancy Check),循环冗余校验,是更加强大的一种错误检测码,常用于确保数据在传输或存储过程中...

    北斗导航电文异或校验源码

    标签“异或校验源码”明确了这个项目的核心功能,即实现异或校验算法。异或校验的基本原理是,任何两个相同值的位进行异或操作结果为0,不同值的位进行异或操作结果为1。因此,如果一个数据块的所有位都进行异或运算...

    常用数据校验源代码(CRC8 CRC16 和校验 异或校验)

    本篇文章将深入探讨几种常见的数据校验方法:CRC8、CRC16以及和校验与异或校验,并通过具体的C++代码示例来说明这些技术的应用。 #### 二、CRC8校验 CRC8(Cyclic Redundancy Check 8 bits)是一种基于8位多项式...

    C++串口通讯API封装,异或校验,只负责发送

    在实际应用中,异或校验虽然能检测出单个字节的错误,但对于多字节错误的检测能力较弱。因此,更复杂的校验方法如CRC(循环冗余校验)和MD5(消息摘要算法)等在需要更高数据完整性的场景下更为常见。 至于压缩包中...

    [108]-36 C语言实例_异或校验算法.pdf

    [108]-36 C语言实例_异或校验算法.pdf

    按位异或校验和计算器

    "按位异或校验和计算器"是一种基于位操作的校验和算法,它通过计算所有数据位的异或结果来生成一个简短的校验值。这个校验和可以用来判断原始数据在传输或存储后是否保持一致。 异或(XOR)运算符是计算机科学中的...

    labview异或SC校验算法

    用labview实现异或SC校验算法

    MFC对话框开发适用 数制转换 CRC16校验 异或校验 .rar

    在IT行业中,尤其是在软件开发领域,数制转换和数据校验是常见的操作。本文将深入探讨在C++...通过深入理解数制转换的原理和实现,以及CRC16和异或校验的算法,开发者可以更好地确保数据的正确性,并提升软件的质量。

    异或校验校验小助手

    异或校验(XOR Checksum)是一种简单而有效的数据完整性检查方法,广泛应用于计算机通信、数据存储等领域。它基于二进制异或运算,通过计算一组数据位的异或结果来生成一个校验和,这个校验和可以用于检测数据在传输...

    CheckTool:CRC校验、累加和校验、异或和校验专业校验工具V1.0

    异或校验可以检测出单个位的翻转错误,但无法发现多个位同时翻转的情况。在CheckTool中,用户可以利用这一特性,对特定场景下的数据进行有效性检查。 CheckTool V1.0的智能提醒功能进一步提升了用户体验。它能自动...

Global site tag (gtag.js) - Google Analytics