zoukankan      html  css  js  c++  java
  • python 计算异或

    
    
     1 '''********************************************************
     2     Func Name:    addZero
     3     Para:         x    :  字符串  
     4                   y    :  长度
     5     return:       x    :  处理后的字符串
     6     Desc:         将字符串修改为指定长度,不足的补0,只限于加长,不剪短
     7     Date:         20190711
     8     Auth:         yanerfree
     9 ********************************************************'''        
    10 def addZero(x, y):
    11     while True:
    12         if len(x) < y:
    13             x = '0' + x
    14         else:
    15             break
    16         
    17     return x
    
    
    
    1 '''********************************************************
     2     Func Name:    hexToInt
     3     Para:         h:16进制数  
     4     return:       datalen:  10进制数
     5     Desc:         #将 16进制数 转换为  INT
     6     Date:         20190711
     7     Auth:         yanerfree
     8 ********************************************************'''
     9 def hexToInt(h):       
    10     return int(h,16)
    11 
    12 '''********************************************************
    13     Func Name:    intToHex
    14     Para:         n    :  10进制数  
    15                   x    :  几个字节
    16     return:       16进制字符串
    17     Desc:         将 16进制数 转换成对应的16进制字符串,并根据字节长度补0,不带0x或者 x
    18     Date:         20190711
    19     Auth:         yanerfree
    20 ********************************************************'''
    21 def intToHex(n, x):
    22     num = hex(n)
    23     #print(num)
    24     num_list = num.split('0x')[1:]#num_list = num.split('0x')[1]
    25     
    26     return addZero(num_list[0].upper(), x*2)
    27         
    28 '''********************************************************
    29     Func Name:    checkValue
    30     Para:         h  :  需要做异或的16进制字符串
    31     return:       value : 异或结果               
    32     Desc:         将传入的16进制按2位(8bit) 做异或运算,前2个异或后的结果与下一个异或,一直到结束
    33     Date:         20190712
    34     Auth:         yanerfree
    35 ********************************************************'''
    36 #将2位的16进制转换成能够用户异或计算的16位数,即'6F'--> 0x6F  --> 10进制
    37 #16进制转10进制
    38 def add0x(s):
    39     return eval('0x'+s)
    40 
    41 def checkValue(h):
    42     #先取前2组,每组2个做异或运算
    43     value = add0x(h[0:2]) ^ add0x(h[2:4])#异或后是10进制数
    44     
    45     for i in range(4, len(h), 2):
    46         value = value ^ add0x(h[i:i+2])
    47         #print('异或结果--10进制:',value)
    48         #print('异或结果--16进制:',hex(value))
    49         #print('转换成16进制intToHex(value, 1):',intToHex(value, 1))
    50         #value = add0x(intToHex(value, 1))
    51         
    52     value = intToHex(value, 1)#16进制的校验值,1个字节
    53     return value.upper()
  • 相关阅读:
    win7下的vxworks总结
    ubuntu 无法获得锁 /var/lib/dpkg/lock
    项目中用到了的一些批处理文件
    win7下安装 WINDRIVER.TORNADO.V2.2.FOR.ARM
    使用opencv统计视频库的总时长
    January 05th, 2018 Week 01st Friday
    January 04th, 2018 Week 01st Thursday
    January 03rd, 2018 Week 01st Wednesday
    January 02nd, 2018 Week 01st Tuesday
    January 01st, 2018 Week 01st Monday
  • 原文地址:https://www.cnblogs.com/yaner2018/p/11240387.html
Copyright © 2011-2022 走看看