栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python】快速实现BCC (异或)校验的计算

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python】快速实现BCC (异或)校验的计算

项目场景:

例如:数据的处理合格校验的过程中,出现需要(异或)校验的情况,这边只会python 脚本,那就快速来完成并记录一下吧

  • BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后即得到校验码。
    例如16进制数据:01 A0 7C FF 02
    计算:01 xor A0 xor 7C xor FF xor 02 = 20
    校验码是:20
    下面已16进制的为例子,其他的bytes等自己处理
问题描述

脚本处理数据的过程中,需要计算出校验码,校验码是根据bcc 来计算得出的,那么就可以通过脚本来实现这一的功能

例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:

str1 = '01A07CFF02' # 16进制,其实也是str 
res = None
print(type(0x00))
# 步长是2,两个16进制未是一个字节
for x in range(0, len(str1), 2):
    hex_str = int("0x" + str1[x:x + 2],16)# 把16进制转10进制
    print(hex_str)
    if x:
        # 第一个
        res  ^= hex_str
    else:
        res  = hex_str ^ 0

print(res ) #0x20
print(hex(res ))#20

这一计算得出的结果就是 20 ,可能你会发现20 在这边的所有里面是不存在的,具有唯一性


原因分析:

一开始是想找一个包来实现的,但是发现BCC 的原理是比较简单的,搜索也可以查询到很多的方法,然后就学习参考下,自己验证测试下,所以以后还是自己努力学习!!丰富知识!!!

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号