资源简介
今天上了一节组原,讲了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官方文档中文版
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- KNN算法实战
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
评论
共有 条评论