资源简介
今天上了一节组原,讲了Hamming Code,对它的代码实现比较感兴趣,于是给自己出了个题目去玩。可以海明编码,也可海明校验。
代码片段和文件信息
from colorama import init # 颜色库
init(autoreset=True)
class valid_bit: # 有效位
def __init__(self b i):
self.num = i # 序号
self.bit = int(b) # 数值
self.link = [] # 组成成分,7 = 4 + 2 + 1
class check_bit: # 校验位
def __init__(self i):
self.num = i # 序号
self.bit = None # 数值
self.link = [] # 校验位
def smallest_check_number(k):
r = 1
while 2 ** r - r - 1 < k:
r += 1 # 得到最小检测位数
return r
def is_standard(string):
return string.count(‘1‘) + string.count(‘0‘) == len(string)
def hamming_encode(string):
checkList.clear()
hammingList = []
hammingList.append(0) # 填补0位,index即下标
for i in range(1 len(string) + 1):
locals()[‘b‘ + str(i)] = valid_bit(int(string[i - 1]) i)
hammingList.append(locals()[‘b‘ + str(i)]) # 先加入b
r = smallest_check_number(len(string))
for j in range(1 r + 1):
locals()[‘P‘ + str(j)] = check_bit(j)
hammingList.insert(2 ** (j - 1) locals()[‘P‘ + str(j)])
checkList.append(2 ** (j - 1)) # 再插入P
for i in range(1 len(hammingList)): # i是有效位,j是检测位
if i in checkList:
continue # 跳过P
remain = i
for j in range(len(checkList) - 1 -1 -1):
if remain >= checkList[j]:
remain -= checkList[j]
hammingList[i].link.append(checkList[j])
if remain == 0:
break
for j in hammingList[i].link:
hammingList[j].link.append(i) # P的link中加入b的位号
# 计算检测码
for j in checkList:
xor = 0
for i in hammingList[j].link:
xor = xor ^ hammingList[i].bit
hammingList[j].bit = xor
for i in range(1 len(hammingList)):
if i in checkList: # 检测码
print(‘\033[1;33m%d\033[0m‘ % hammingList[i].bit end=‘‘)
else:
print(‘%d‘ % hammingList[i].bit end=‘‘)
print(‘\n‘)
def hamming_correct(string):
checkList.clear()
hammingList1 = [] # 装位
hammingList1.append(0)
k = 1
while k + smallest_check_number(k) != len(string): # 反推r和k
k += 1
r = smallest_check_number(k)
for i in range(r):
checkList.app
- 上一篇:mod_wsgi.so
- 下一篇:RasaCore官方文档中文版
相关资源
- mod_wsgi.so
- Python 强大的图论和网络研究工具 ne
- python从入门到精通视频60集全
- wheel 安装包
- Python程序设计与算法基础教程源代码
- python数据处理csv->图表
- 微博评论Python代码实现
- Python最小距离法
- 五子棋AI python实现
- requests 中文文档
- 手机Python图形界面教程
- Birch python实现
- 用Python脚本对栅格图层进行批量resa
- Python学习路线Python课程大纲Python视频
- 自适应共振理论ART2(Adaptive Resonance
- 基于opencv绘制图片的三维空间显示图
- 抓取CSDN博客文章的简单爬虫python源码
- 囚徒困境的演化博弈实现Python
- 数据处理程序
- 利用python实现基于SVM的文本分类
- python新浪微博爬虫,爬取微博和用户
- DoS攻击Python源码
- 使用训练好的模型进行预测
- python 打砖块源代码
- Python-每天定时发消息
- 实现火车票查询python.zip
- python SVM算法
- 基于python的人脸检测
-
li
nk Prediction相似性计算方法.rar - 利用Python创建ArcGis批量输出地图影工
评论
共有 条评论