一、BCC校验码计算
def bcc(value):# BCC校验码计算
numb = len(value)
#print(numb)
nb = int(numb / 2)
#print(nb)
bcc = 0
for i in range(nb):
a = 2 * i
b = 2 * (i + 1)
aa = value[a:b]
bcc = bcc ^ int(aa, 16)#^在算术运算中,表示异或。4 ^ 3表示4异或3,结果为7。
#print("===============================")
# print("生成bcc码:%s" % f‘{bcc:x}‘)
#print("===============================")f‘{bcc:x}‘
return f‘{bcc:x}‘.upper()
二、十六进制字符串文本文件生成二进制文件
def changBinary(value): #十六进制字符串文本文件生成二进制文件
len_s = int(len(value)/2) #计算字节的个数
list_nums = [] #定义一个空的list
i = 0
for i in range(0, len_s): #循环将解析出来的字节填充到list中
chs = value[2*i : 2*i + 2]
num = int(chs, 16)#以16进制规则解析为整数
list_nums.append(num)
bys = bytes(list_nums) #将list转换成字节数组(二进制字节流)
return bys
三、二进制字节流(组)转换成十六进制字符串
def changHexadecima(value): #二进制字节流(组)转换成十六进制字符串
lis_str=[]
# print(value)
lis_hex=list(value)
# print(lis_hex)
for hex_number in lis_hex:
hex_str=hex(hex_number)
# print(hex_str)
if hex_str.startswith(‘0x‘):
hex_str = hex_str[2:]
if len(hex_str)==1:
hex_str=‘0‘+hex_str
lis_str.append(hex_str)
result = ‘‘.join(lis_str)
return result.upper()
四、10进制字符串和16进制字符、2进制串转换
10进制转16进制:hex(‘10进制字符串’)[2:].upper()
16进制转10进制整数:int(‘16进制字符串’, 16)
16进制字符串转2进制(01):bin(int(‘16进制’, 16))
五、字符串和16进制字符串之间转换
def hex_str(value): # 字符串转16进制
data = bytes(value, encoding=‘utf-8‘)
output = list(binascii.hexlify(data))
lis_str = []
for hex_number in output:
hex_str = hex(hex_number)
# print(hex_str)
if hex_str.startswith(‘0x‘):
hex_str = hex_str[3:]
lis_str.append(hex_str)
result = ‘‘.join(lis_str)
# print(result, type(result))
return result
def str_hex(value): #16进制转字符串
flag = binascii.unhexlify(value).decode()
return flag
如有误,请纠正,谢!
原文:https://www.cnblogs.com/mys6/p/14685078.html