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()
  • 相关阅读:
    博客园Js设置
    springboot练习笔记
    相关的其他文件
    设计模式之----代理模式
    JSP的四种范围
    io流读写及相关内容
    缓存
    gson解析json
    Android简单获得通讯录
    android服务之一 Service
  • 原文地址:https://www.cnblogs.com/yaner2018/p/11240387.html
Copyright © 2011-2022 走看看