日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 实现 CRC 冗余码的方法

發(fā)布時(shí)間:2024/8/23 python 90 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 实现 CRC 冗余码的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python 實(shí)現(xiàn) CRC 冗余碼的方法

  • 我這里考慮輸入是 torch.Tensor的一個(gè) 只包含0 ,1 元素的張量
  • 對(duì)于輸入是numpy或者0,1字符串的方法就更簡(jiǎn)單了,總之都先要將輸入處理成為 0,1字符串,例如“1010”
  • 首先構(gòu)造一個(gè)輸入:
import randoma = [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(' ','')
  • 構(gòu)造添加CRC碼的方法
def add_crc(wm):a = bytes(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'+aprint(f"{len(a)}:{a}")crc = torch.Tensor([int(i) for i in a])return torch.cat([wm,crc],dim=0)
  • 構(gòu)造CRC校驗(yàn)的方法
def verify_crc(wm):#32位CRC校驗(yàn)full_wm = str(wm.numpy().tolist())[1:-1].replace('.0','').replace(',','').replace(' ','')wm = full_wm[:-32]crc = full_wm[-32:]# a = int(wm,2) #轉(zhuǎn)換為一個(gè)數(shù)字# a = bin(a)a = bytes(wm, encoding='utf-8')a = binascii.crc32(a)if a == int(crc,2):return Trueelse:return False
  • 測(cè)試 CRC 生成
  • 測(cè)試 CRC 校驗(yàn)
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
  • 可以看到最后一行,校驗(yàn)成功

  • 加入擾動(dòng)測(cè)試 CRC 校驗(yàn)

a = add_crc(a) print(a) a[12:15] = 0. # 加入擾動(dòng) 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
  • 可以看到最后一行,校驗(yàn)失敗

總結(jié)

以上是生活随笔為你收集整理的python 实现 CRC 冗余码的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。