【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 的原理是比较简单的,搜索也可以查询到很多的方法,然后就学习参考下,自己验证测试下,所以以后还是自己努力学习!!丰富知识!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值