项目场景:
例如:数据的处理合格校验的过程中,出现需要(异或)校验的情况,这边只会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 的原理是比较简单的,搜索也可以查询到很多的方法,然后就学习参考下,自己验证测试下,所以以后还是自己努力学习!!丰富知识!!!