汉明码逻辑地址(https://zhuanlan.zhihu.com/p/425393178)
实现方式一:用字符串代替二进制进行计算
1.首先根据2k ≥ n + k + 1确定需要几阶
2.在通过函数把传入的字符串转换为列表,在2的K次方位置插入0
3.最后在异或计算确认在2的K次方位置插入0或1
import math
code = '0101101001'
code_2 ="00001010101001"
# 先根据2k ≥ n + k + 1确定需要几阶
def count_k(code:str):
len_code = len(code)
for k in range(len_code):
if pow(2,k)-1 >= len_code + k:
return k
# 在通过函数把传入的字符串转换为列表,在2的K次方位置插入0
def gnerate_mk(codes:list):
for code in codes:
k = count_k(code)
list_code = []
index = 0
count = 0
for s in range(1,k+len(code)+1):
if int(math.log2(s)) == count:
list_code.append('0')
count += 1
else:
list_code.append(code[index:index+1])

最低0.47元/天 解锁文章
855





