通信算法之300:CRC表生成方式-CRC8、CRC16、CRC32-輸入字節

"CRC表的MATLAB生成代碼"

生成的查找表可以用于快速計算 CRC 值,通過查表法可以顯著提高 CRC 計算效率,尤其適用于需要處理大量數據的場景。

下面是一個生成 CRC 查找表(CRC Table)的 MATLAB 代碼,該代碼可以根據指定的多項式、位寬和初始值生成對應的 CRC 表:

這個函數可以生成各種常見的 CRC 查找表,如 CRC8、CRC16、CRC32 等。使用時需要指定以下參數:

  1. poly:CRC 多項式,以十六進制表示(例如,CRC32 的多項式是 0x04C11DB7)
  2. width:CRC 的位寬(如 8、16、32)
  3. reflect_in:輸入數據是否需要字節翻轉(1 表示翻轉,0 表示不翻轉)
  4. reflect_out:輸出結果是否需要翻轉(1 表示翻轉,0 表示不翻轉)
  5. xor_out:最終結果需要異或的值(通常為 0 或全 1)

示例用法(生成 CRC32 表):

crc32_table = generate_crc_table(0x04C11DB7, 32, 1, 1, 0xFFFFFFFF);

參考代碼:

% https://zhuanlan.zhihu.com/p/396165368
% http://outputlogic.com/?page_id=321
% https://zhuanlan.zhihu.com/p/651214373
% https://blog.csdn.net/weixin_43517955/article/details/139132172?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-139132172-blog-148381867.235^v43^pc_blog_bottom_relevance_base1&spm=1001.2101.3001.4242.1&utm_relevant_index=3    
% http://www.ip33.com/crc.html
% https://wavedrom.com/editor.html
% https://zhuanlan.zhihu.com/p/396165368% crc_table = generate_crc_table(0x11021, 16, 1, 1, 0);
% dat2 = dec2hex(crc_table.',4);
% dat2 = lower(dat2);function crc_table = generate_crc_table(poly, width, reflect_in, reflect_out, xor_out)% 生成CRC查找表% 輸入參數:%   poly      - CRC多項式(十六進制)%   width     - CRC位寬(如8, 16, 32)%   reflect_in - 輸入是否翻轉(1表示翻轉, 0表示不翻轉)%   reflect_out - 輸出是否翻轉(1表示翻轉, 0表示不翻轉)%   xor_out   - 結果異或值(十六進制)% 輸出參數:%   crc_table - 生成的CRC查找表crc_table = zeros(1, 256);% 計算掩碼,用于截取指定位寬的結果% mask = (1 << width) - 1;mask = bitshift(1, width)-1;for i = 0:255% 初始化當前值crc = i;% 如果輸入需要翻轉,則翻轉輸入字節if reflect_incrc = bitreverse(crc, 8);end% 將8位輸入擴展到指定的CRC位寬% crc = crc << (width - 8);crc = bitshift(crc, width-8);% 處理8位數據for j = 1:8if bitget(crc, width)% 如果最高位為1,左移后與多項式異或crc = bitshift(crc, 1);crc = bitxor(crc, poly);else% 如果最高位為0,僅左移crc = bitshift(crc, 1);end% 保持在指定的位寬范圍內crc = bitand(crc, mask);end% 如果輸出需要翻轉,則翻轉結果if reflect_outcrc = bitreverse(crc, width);end% 與輸出異或值進行異或操作crc = bitxor(crc, xor_out);% 存入查找表crc_table(i + 1) = crc;end
endfunction reversed = bitreverse(value, bits)% 翻轉指定位數的二進制值reversed = 0;for i = 1:bitsreversed = bitshift(reversed, 1);reversed = bitor(reversed, bitand(value, 1));value = bitshift(value, -1);end
end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92412.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92412.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92412.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國內使用 npm 時配置鏡像源

在國內使用 npm 時&#xff0c;由于網絡限制可能會遇到下載速度慢或連接超時的問題。通過設置國內鏡像源&#xff0c;可以顯著提升下載速度和穩定性。以下是常用的國內 npm 鏡像源及其配置方法。 查詢當前使用的鏡像源 npm get registry 設置為淘寶鏡像源 npm config set reg…

一篇文章入門TCP與UDP(保姆級別)

&#x1f433;第一部分&#xff1a;什么是TCP和UDP? 先給結論&#xff1a;TCP 和 UDP 都是傳輸層協議&#xff0c;負責把數據從一臺電腦 “搬” 到另一臺電腦&#xff0c;但它們的 “搬運風格” 完全不同 &#x1f4e6; 比喻&#xff1a;TCP 像 "打電話"&#xff…

2024年測繪程序設計比賽--空間探索性分析(數據為2025年第三次模擬數據)

想要在2026年參加這個比賽的&#xff0c;可以加入小編和其它大佬所建的群242845175一起來備賽&#xff0c;為2026年的比賽打基礎&#xff0c;也可以私信小編&#xff0c;為你答疑解惑一、讀寫文件 internal class Read {public static List<Point> pts new List<Poin…

力扣 hot100 Day68

84. 柱狀圖中最大的矩形 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大面積。 class Solution { public:int largestRectangleArea(vector<int>&…

生成式AI時代,Data+AI下一代數智平臺建設指南

DataAI下一代數智平臺建設指南一、生成式AI時代的五大數據挑戰二、驅動DataAI平臺建設的核心要素主動選擇&#xff1a;構建競爭壁壘被動應對&#xff1a;解決現有痛點三、DataAI平臺的六大關鍵能力四、騰訊云DataAI產品方案與實踐1. 數據與AI協同層2. 開發與治理層3. 存儲與計算…

FPGA學習筆記——SPI通訊協議簡介

目錄 一、SPI通訊協議簡介 二、SPI物理層 三、SPI協議層 1.通訊模式 &#xff08;一&#xff09;模式零 &#xff08;二&#xff09;模式一 &#xff08;三&#xff09;模式二 &#xff08;四&#xff09;模式三 2.通訊流程 一、SPI通訊協議簡介 SPI&#xff08;Seria…

JavaScript核心概念解析:從基礎語法到對象應用

導語&#xff1a;本文系統梳理JavaScript的核心知識框架&#xff0c;適用于編程入門學習者。內容涵蓋基礎語法、數據類型、函數應用及內置對象&#xff0c;幫助讀者構建清晰的JS知識體系。一、語言基礎與執行原理瀏覽器執行機制渲染引擎&#xff1a;解析HTML/CSS&#xff08;如…

在 Kotlin 中使用函數類型和 lambda 表達式

參考官方文檔: https://developer.android.google.cn/codelabs/basic-android-kotlin-compose-function-types-and-lambda?hl=zh-cn#0 1、 將函數存儲在變量中 作為一種一級結構,函數也屬于數據類型,因此,可以將函數存儲在變量中、將函數傳遞到函數,以及從函數返回函數…

計算機硬件組成原理

&#x1f9e0; 一、計算機的硬件組成&#xff1a;五大核心部件 根據“馮諾依曼體系結構”&#xff0c;現代計算機主要由這 5大部分組成&#xff1a;部件作用通俗解釋1?? 運算器&#xff08;ALU&#xff09;負責算術和邏輯運算會加減乘除和做判斷的“計算工廠”2?? 控制器&a…

告別 window.open,擁抱全新浮窗體驗!

深入了解 Document Picture-in-Picture API&#xff0c;并對比 Modal 的最佳使用場景在前端開發中&#xff0c;我們經常會遇到這樣的需求&#xff1a;彈出一個浮動窗口來顯示一些實時信息、工具欄或視頻內容。過去我們會用 window.open()&#xff0c;后來越來越多的開發者傾向于…

Python爬蟲實戰:研究weiboSpider技術,構建新浪微博數據采集系統

1. 引言 1.1 研究背景 在信息時代,社交媒體已成為人們獲取信息、表達觀點的重要渠道。微博作為其中的典型代表,擁有龐大的用戶群體和活躍的內容生態。截至 2023 年底,微博月活躍用戶數已超過 5.8 億,日均發博量達數千萬條,數據涵蓋社會熱點、公眾情緒、消費偏好等多維度…

HashMap初始化容量為10,還未添加數據時,它的實際容量是多少?

在Java中&#xff0c;當使用 new HashMap<>(10) 初始化一個容量為10的 HashMap 但尚未添加任何數據時&#xff0c;其實際容量&#xff08;底層數組的長度&#xff09;不是10&#xff0c;而是16。原因如下&#xff1a;關鍵機制解析&#xff1a;容量必須是2的冪HashMap要求…

前端開發:CSS(2)—— 選擇器

前面我們初步學習了CSS&#xff0c;對其有了基本的認識。下面我們來具體學習CSS中的選擇器。 目錄 選擇器的種類 1.基礎選擇器 &#xff08;1&#xff09;標簽選擇器 &#xff08;2&#xff09;類選擇器 &#xff08;3&#xff09;id選擇器 &#xff08;4&#xff09;通…

人工智能2.0時代的人才培養和通識教育

目錄引言&#xff1a;從"機器模仿"到"智能協同"的時代跨越一、人工智能2.0的技術演進&#xff1a;從規則到大模型的三次躍遷1. 人工智能0.0&#xff08;1956-2006&#xff09;&#xff1a;規則驅動的"專家系統時代"2. 人工智能1.0&#xff08;20…

管理索引常用的API

二.管理索引常用的API 1.查看現有索引信息 查看所有索引信息列表&#xff1a;curl -X GET http://elk101.k8s.com:9200/_cat/indices?v查看某個索引的詳細信息:curl -x GET http://elk101.k8s.com:9200/linux-2020-10-2溫馨提示: (1)"?v"表示輸出表頭信息&#xff…

當文檔包含表格時,如何結合大模型和OCR提取數據?

在AI應用極速發展的當下&#xff0c;LLM&#xff08;大語言模型&#xff09;與RAG&#xff08;檢索增強生成&#xff09;系統已成為構建智能問答、知識管理等高階應用的核心引擎。 然而&#xff0c;許多團隊在項目落地時遭遇了現實的挑戰&#xff1a;模型的實際表現——無論是回…

機器學習工程化 3.0:從“實驗科學”到“持續交付”的 7 個關卡

一、背景&#xff1a;為什么 90% 的 ML 項目死在了實驗臺&#xff1f; Gartner 2024 報告顯示&#xff0c;87% 的企業機器學習項目未能走出實驗室。原因并非算法落后&#xff0c;而是缺少“工程化骨骼”&#xff1a;數據漂移無人發現&#xff0c;模型上線一周就失效&#xff1b…

BGP筆記整理

一、BGP 基礎概念1. 產生背景BGP&#xff08;Border Gateway Protocol&#xff09;是自治系統&#xff08;AS&#xff09;間的動態路由協議&#xff0c;屬于外部網關協議&#xff08;EGP&#xff09;&#xff0c;用于在不同 AS 之間傳遞路由信息。2. 自治系統&#xff08;AS&am…

Mysql-MVCC機制

1. MVCC機制詳解 在Read Uncommitted級別下&#xff0c;事務總是讀取到最新的數據&#xff0c;因此根本用不到歷史版本&#xff0c;所以MVCC不在該級別下工作。 在Serializable級別下&#xff0c;事務總是順序執行。寫會加寫鎖&#xff0c;讀會加讀鎖&#xff0c;完全用不到MVC…

MySQL面試題及詳細答案 155道(061-080)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…