IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python 实现 CRC 冗余码的方法 -> 正文阅读

[人工智能]python 实现 CRC 冗余码的方法

python 实现 CRC 冗余码的方法

  • 我这里考虑输入是 torch.Tensor的一个 只包含0 ,1 元素的张量
  • 对于输入是numpy或者0,1字符串的方法就更简单了,总之都先要将输入处理成为 0,1字符串,例如“1010”
  • 首先构造一个输入:
import random

a = [1 for i in range(16)]
b = [0 for i in range(16)]
a.extend(b)
random.shuffle(a)
a = np.array(a)
a = torch.Tensor(a)
  • 将 a 处理成为 0,1字符串:
a = str(a.numpy().tolist())[1:-1].replace('.0','').replace(',','').replace(' ','')
  • 构造添加CRC码的方法
def add_crc(wm):
    a = bytes(full_wm, encoding='utf-8')
    print(f"{len(a)}:{a}")
    a = binascii.crc32(a)
    a = bin(a)
    a = str(a)[2:]
    padding = 32-len(a)
    for i in range(padding):
        a = '0'+a
    print(f"{len(a)}:{a}")
    crc = torch.Tensor([int(i) for i in a])
    return torch.cat([wm,crc],dim=0)
  • 构造CRC校验的方法
def verify_crc(wm):
    #32位CRC校验
    full_wm = str(wm.numpy().tolist())[1:-1].replace('.0','').replace(',','').replace(' ','')
    wm = full_wm[:-32]
    crc = full_wm[-32:]
    # a = int(wm,2) #转换为一个数字
    # a = bin(a)
    a = bytes(wm, encoding='utf-8')
    a = binascii.crc32(a)
    if a == int(crc,2):
        return True
    else:
        return False
  • 测试 CRC 生成
  • 测试 CRC 校验
a = add_crc(a)
print(a)
results = verify_crc(a)
print(results)
  • 输出
32:b'00110110101100011011110000001011'
32:10011010000011110000000001101111
tensor([0., 0., 1., 1., 0., 1., 1., 0., 1., 0., 1., 1., 0., 0., 0., 1., 1., 0.,
        1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 1., 0., 1., 1., 1., 0., 0., 1.,
        1., 0., 1., 0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 1., 1., 0., 1., 1., 1., 1.])
True
  • 可以看到最后一行,校验成功

  • 加入扰动测试 CRC 校验

a = add_crc(a)
print(a)
a[12:15] = 0. # 加入扰动
results = verify_crc(a)
print(results)
  • 输出
32:b'00000010100101011011011110010111'
32:01000000100001101101001011110100
tensor([0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 1., 0., 1., 0., 1., 1., 0.,
        1., 1., 0., 1., 1., 1., 1., 0., 0., 1., 0., 1., 1., 1., 0., 1., 0., 0.,
        0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 1., 0., 1., 1., 0., 1., 0., 0.,
        1., 0., 1., 1., 1., 1., 0., 1., 0., 0.])
False
  • 可以看到最后一行,校验失败
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:01:51  更:2021-12-07 12:03:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:41:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码