| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 奇偶校验、CRC校验代码实现 -> 正文阅读 |
|
[游戏开发]奇偶校验、CRC校验代码实现 |
奇偶校验:奇偶校验要用到c++中的^,即按位异或 举例 0000 1110 ^ 1100 0001 0000 1110 1100 0001 得到:1100 1111 奇偶校验:
实际中,要传的实际数据不会是从0位置开始,最后一句就要对应改成例如i+2之类的 举例: 1001 0001,parity:1 1001 1101,parity:1 1100 1100,parity:0 加上parity后,1的个数永远是偶数。因此此为偶校验。 代码可以理解成,parity位每遇到一个1就会改变自身值(0^1=1,1^1=0),从而看最终parity值和一开始值是否相等,即可知道遇到了奇数个1或是偶数个1。 CRC校验:只搞懂了简单的原理,一个例子: 这里用的多项式是x^3+1,即除数 所以实际传出去的是,10100001 111 简单程序:
这里的除数取的是0x8c,实际中会有一个表格规定对应值 整个代码可以简单理解成,crc是个寄存器,如果其首位是1,则左移并做异或运算,若其首位为0,则只左移,一直左移到首位是1,和前面竖式计算原理大致相同。因为这里定义的unsigned char,是8bits,所以遍历8次。 而大循环是根据一次要传的字符数而定。 需要注意的是,比如SendBuff[0] = '2',则SendBuff[0] = 0x32(ascii) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 10:47:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |