首页 > 编程语言 >C# 异或校验两种方法

C# 异或校验两种方法

时间:2024-04-15 15:46:14浏览次数:32  
标签:Convert string 16 C# bytes 校验 异或 byte ToInt32

 1   
 2         public byte GetXor(byte[] data)
 3         {
 4             byte CheckCode = 0;
 5             int len = data.Length;
 6             for (int i = 0; i < len; i++)
 7             {
 8                 CheckCode ^= data[i];
 9             }
10             return CheckCode;
11         }
12 
13         private string CRC(string cmdString)
14         {
15             try
16             {
17                 //CRC寄存器
18                 int CRCCode = 0;
19                 //将字符串拆分成为16进制字节数据然后两位两位进行异或校验
20                 for (int i = 1; i < cmdString.Length / 2; i++)
21                 {
22                     string cmdHex = cmdString.Substring(i * 2, 2);
23                     if (i == 1)
24                     {
25                         string cmdPrvHex = cmdString.Substring((i - 1) * 2, 2);
26                         byte t = (byte)Convert.ToInt32(cmdHex, 10);
27                         byte tt = (byte)Convert.ToInt32(cmdPrvHex, 10);
28                          CRCCode = (byte)Convert.ToInt32(cmdPrvHex, 10) ^ (byte)Convert.ToInt32(cmdHex, 10);
29                     }
30                     else
31                     {
32                         CRCCode = (byte)CRCCode ^ (byte)Convert.ToInt32(cmdHex, 16);
33                     }
34                 }
35                 return Convert.ToString(CRCCode, 16).ToUpper();//返回16进制校验码
36             }
37             catch
38             {
39                 throw;
40             }
41         }
42 
43         private void button1_Click(object sender, EventArgs e)
44         {
45             try
46             {
47                 // txtZhi.Text = CRC(textBox1.Text.Replace(" ", ""));
48                 byte[] bytes = new byte[6];
49                 bytes[0] = 36;
50                 bytes[1] = 50;
51                 bytes[2] = 50;
52                 bytes[3] = 48;
53                 bytes[4] = 50;
54                 bytes[5] = 57;
55                 string cmd= "$31064";//$ 3 1 064 14
56                 ASCIIEncoding ascii = new ASCIIEncoding();
57                 Byte[] encodedBytes = ascii.GetBytes(cmd);
58                 byte code = GetXor(encodedBytes);
59                  
60                 txtZhi.Text = cmd+ Convert.ToString(code, 16).ToUpper();
61             }
62             catch
63             {
64                 MessageBox.Show("校验失败,请检查字符串是否包含特殊字符");
65             }
66         }
67 
68         private void button2_Click(object sender, EventArgs e)
69         {
70             ASCIIEncoding ascii = new ASCIIEncoding();
71             Byte[] encodedBytes = ascii.GetBytes(textBox1.Text);
72         }

 

标签:Convert,string,16,C#,bytes,校验,异或,byte,ToInt32
From: https://www.cnblogs.com/xingyuanzier/p/18136081

相关文章

  • Mysql安装和远程登录--Centos7
    在Centos7中使用的包管理工具是yum,当然使用包管理工具安装也是最方便的。本文操作内容需要在root用户下,否则有些步骤无法成功执行。系统环境信息展示安装MySQL提供的RPMwgethttps://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm检查是否下载成功......
  • layUI select下拉框动态赋值和设置选中值
    layUIselect下拉框动态赋值和设置选中值<script>layui.use(['form','layedit','laydate'],function(){var$=layui.jquery;$.ajax({url:'../api/SysType/GetArticleType?parentId=1',//json文......
  • Fluent Meshing:导入几何报错(Error in CAD Import)
    问题具体描述在使用Fluent自带的划分网格工具时,需要导入几何,在spaceclaim中做好几何处理以后,导入几何却报错:ErrorinCADImport解决方案采用下面的该方法逐一排除路径是否含有中文或者不合规字符等以管理员身份启动软件尝试几何文件和划网格软件版本是否一致Fluent是否安......
  • Mac python 多版本安装、删除、切换
    brewinstallpyenv版本验证pyenv-v 二查看所有的Python版本pyenvversions *指向的是当前所使用的版本,system是系统安装的python三查看所有可以安装的python版本pyenvinstall--list 截图部分四安装指定版本pyenvinstall3.8.9 五......
  • 云原生周刊:CNCF 2023 年度调查报告 | 2024.4.15
    开源项目推荐highlight该项目是一个开源全栈监控平台。其功能包括错误监控、会话重放、日志记录、分布式跟踪等。HelmComposeHelmCompose是一个helm插件,用于在单个配置文件中管理一个或多个图表的多个版本。HAMi异构AI计算虚拟化中间件(HAMi),是一个“一站式”图表,旨在......
  • arm-linux-gcc 交叉编译工具链使用方法
    参考文献:[野火]嵌入式Linux基础与应用开发实战指南安装交叉编译工具链有如下三种方式:直接在Ubuntu下使用APT包管理工具下载安装。自行下载第三方制作好的工具链。使用crosstool-ng根据需要自己制作。在开发中比较多的开发者对所有程序都直接用arm-linux-gnueabihf-gc......
  • npm ERR! errno CERT_HAS_EXPIRED(淘宝镜像证书过期)
    淘宝镜像证书过期npmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIREDnpmERR!requesttohttps://registry.npm.taobao.org/echartsfailed,reason:certificatehasexpired SSL证书已过期导致npm命令失败的问题。通常是因为证书过期或不再受信任而引......
  • Linux 64位内核(arm64)驱动兼容32位应用程序(armhf)的ioctl接口
    最近,公司来了一次硬件升级,开发平台从全志T3(armhf)升级到全志T527(arm64),平台迁移后,想直接使用原来动态库和应用程序从而减少开发量,用户态大部分接口都运行正常,唯独ioctl接口无法调用成功。如果要成功移植要做到以下几点:1.驱动要同时实现unlocked_ioctl和compat_ioctl。str......
  • vue指令中的import不生效,如何在指令中使用import { useBaseStore, useLocalStore } fr
    在Vue指令中,不能直接使用父组件中的导入语句和变量。指令是在模板编译阶段执行的,而不是在JavaScript的运行时执行的。因此,无法在指令中直接访问父组件的导入和变量。在Vue指令中,不能直接使用ES6的import语法,因为指令是在模板编译阶段执行的,而不是在JavaScript的运行......
  • Cmocka 单元测试日志记录
    isbs_doc/release/ipg/../ut跑例(24.4.15)ut测试不通过在isbs_doc文件夹git分支release/ipg中对ut进行跑例测试通过gitcloneisbs_doc文件夹到本地切换到release/ipg分支在#164中找到关于cmocka单元测试的ut文件夹在终端MSYS2-Mingw64直接切换到该目......