C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)

embedded/2024/11/22 11:32:24/

        最近在做一个与激光器用串口进行通讯的程序文档中要求将频率参数以3个字节的方式进行发送。这里记录一下过程。以便以后再有类似问题时可以快速解决。

        

/// <summary>/// 设置频率/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnSetHz_Click(object sender, EventArgs e){//设置PRF:PRF xxxx<CR><LF>try{//[00][02][00][11][D#1][D#2][CS][CS][0D]if (!string.IsNullOrEmpty(txtHz.Text.Trim())){var command = "[00][03][00][21]";int valueInt = -1;int.TryParse(txtHz.Text.Trim(), out valueInt);if (valueInt > 0){valueInt = valueInt * 1000;var hexStrByteSUm = 03 + 00 + 21;string hexString = valueInt.ToString("X6"); //转换为6位十六进制,前面填充0,数字6表示需求的长度byte[] byteArray = new byte[3];for (int i = 0; i < 3; i++){byte bit = Convert.ToByte(hexString.Substring(i * 2, 2), 16);byteArray[i] = bit;hexStrByteSUm += bit;command += "[" + hexString.Substring(i * 2, 2) + "]";}//command += "[" + hexStrByteSUm.ToString("X2") + "]";//校验和 16进制command += "[" + hexStrByteSUm % 256 + "]";//前面所有字节的和(模256)。这个校验和用于确保命令在传输过程中没有出错。command += "[0D]";AddListViewThread(null, "设置频率 发送:" + command, Color.Blue);//[00][03][00][21][07][A1][20][E0][0D]serialPortLaser.Write(command);}else{MessageBox.Show("输入的值无效!");}}else{MessageBox.Show("频率不能为空!");}}catch (Exception ex){MessageBox.Show("频率异常!msg:" + ex.Message);}}

        在C#中,可以使用ToString方法将整数转换为其十六进制表示的字符串,并使用Convert.ToString方法将整数转换为指定基数的字符串。对于转换为十六进制字节表示,需要首先确定整数的字节表示形式,通常是4个字节。

以下是将5000转换为其十六进制字节表示的示例代码:

using System;class Program
{static void Main(){int number = 5000;string hexString = number.ToString("X8"); // 转换为8位十六进制,前面填充0byte[] byteArray = new byte[4];for (int i = 0; i < 4; i++){byteArray[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);}Console.WriteLine(BitConverter.ToString(byteArray).Replace("-", " "));}
}
这段代码首先将整数5000转换为8位十六进制字符串(前面填充0以确保总是4个字节),然后将每两个十六进制字符转换为字节,并最终以字节数组的形式输出。BitConverter.ToString用于以可读格式输出字节数组,Replace用于将输出中的连字符换成空格。

       

 


http://www.ppmy.cn/embedded/139613.html

相关文章

hhdb数据库介绍(9-24)

计算节点参数说明 failoverAutoresetslave 参数说明&#xff1a; PropertyValue参数值failoverAutoresetslave是否可见是参数说明故障切换时&#xff0c;是否自动重置主从复制关系默认值falseReload是否生效否 参数设置&#xff1a; <property name"failoverAutor…

论文学习——基于协同进化和多样性增强的动态约束多目标优化算法

论文题目&#xff1a;Dynamic constrained multi-objective optimization algorithm based on co-evolution and diversity enhancement 基于协同进化和多样性增强的动态约束多目标优化算法&#xff08;Wang Che a,b, Jinhua Zheng a,b,∗, Yaru Hu a,b, Juan Zou a,b, Shengx…

php:nginx如何配置WebSocket代理?

在nginx配置中加入以下配置即可&#xff1a; server {listen 80;server_name test.com;# 配置 WebSocket 代理location /ws {proxy_pass http://127.0.0.1:8083;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade&qu…

计算机网络(第一章)

文章目录 概述1.1计算机网络在信息时代的作用1.2因特网概述1. 网络,互连网(互联网)和因特网2. 因特网发展的三个阶段3.因特网的标准化工作4.因特网的组成 1.3 三种交换方式电路交换 (Circuit Switching)分组交换 (Packet Switching)报文交换 (Message Switching)三个交换的对比…

7 设计模式原则之合成复用原则

一、什么是合成复用原则&#xff1f; 1.定义&#xff1a; 要尽量使用对象组合&#xff08;组合关系&#xff09;来实现代码复用&#xff0c;而不是通过类继承&#xff08;继承关系&#xff09;来实现。 2.继承 vs. 组合 继承是一种“强耦合”的关系&#xff0c;子类会受父类的…

2024年亚太数学建模竞赛问题C宠物产业及相关产业发展分析与对策

随着人们消费理念的发展&#xff0c;随着经济的快速发展和人均收入的提高&#xff0c;宠物产业作为一个新兴产业在全球范围内逐渐积聚势头。1992年&#xff0c;中国小动物保护协会成立&#xff0c;随后1993年&#xff0c;皇家狗狗、玛氏等国际宠物品牌进入中国市场。随着“宠物…

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

基本信息 原文标题&#xff1a;ROBUSTKV: DEFENDING LARGE LANGUAGE MODELS AGAINST JAILBREAK ATTACKS VIA KV EVICTION 原文作者&#xff1a;Tanqiu Jiang, Zian Wang, Jiacheng Liang, Changjiang Li, Yuhui Wang, Ting Wang 作者单位&#xff1a;Stony Brook University…

极简AI工具箱网站开源啦!

开源地址&#xff1a;https://gitee.com/toolsj-open/go 反正也经营不下去了&#xff0c;一点流量都没有。虽然谈不上精品&#xff0c;但是我也用心做了。开源出来供学习吧&#xff0c;下面是详细文档&#xff1a; 相关仓库 mysql表结构&#xff1a;https://gitee.com/tools…