发布时间:2019-09-15 09:54:18编辑:auto阅读(2322)
python计算CRC16等
智能电能表数据通信协议DL/T 645 - 2007;本部分实现了该协议的部分功能。
'''
计算645数据域数据长度
@Source 2013-5-10 16:30
'''
def LenCal(s):
L=''
L=hex(len(s)/2).replace('0x','')
if len(L)<=1:
L=('00'+L)[-2:]
return L
'''
对16进制字符串进行加0x33处理
@Source 2013-5-10 12:00
'''
def Add33(s):
h=''
for i in range(len(s)/2):
temper=''
temper=hex(int('33',16)+int(s[2*i:2*i+2],16)).replace('0x','')
if len(temper)<=1:
temper=('00'+temper).upper()[-2:]
h=h+temper
##返回加0x33后的数据
return h
'''
对16进制字符串进行减0x33处理
@Source 2013-5-10 12:10
'''
def Reduce33(s):
h=''
for i in range(len(s)/2):
temper=''
temper=hex(int(s[2*i:2*i+2],16)-int('33',16)).replace('0x','')
##如果余值为负数,去除'-'
temper=temper.replace('-','')
if len(temper)<=1:
temper=('00'+temper).upper()[-2:]
h=h+temper
##返回减0x33后的数据
return h
'''
计算16进制字符串的CRC16校验
@Source 2013-5-10 11:00
'''
def CRC16(s):
h='0'
for i in range(len(s)/2):
h=hex(int(h,16)+int(s[2*i:2*i+2],16))
h=h.replace('0x','')
if len(h)<=1:
h='00'+h
return h.upper()[-2:]
##68AAAAAAAAAAAA681300DF16
##print CRC16('68AAAAAAAAAAAA681300')
##print Add33('010101010101')
##print Reduce33('010101010101')
print LenCal('010101010101')
上一篇: Mac安装多个python版本
下一篇: python监控windows的CPU,
47846
46397
37285
34736
29317
25974
24918
19952
19548
18031
5794°
6419°
5930°
5963°
7066°
5912°
5947°
6440°
6405°
7782°