当前位置: 首页 > news >正文

C#-字符串与16进制字节数组转换

一、核心概念

术语说明
16进制字符串以空格分隔的字节文本表示,如"48 65 6C 6C 6F"
Byte数组字节数据的二进制形式,如byte[] {72, 101, 108, 108, 111}
fromBase转换的进制基数,支持 2/8/10/16,默认16
X2 格式将字节格式化为两位大写16进制字符串

二、常用操作

操作列表

操作方法说明
字符串转字节数组HexStringToByte将空格分隔的16进制字符串转为byte[]
字节数组转字符串ByteToHexString将byte[]转为空格分隔的16进制字符串
字符串分割Split(' ')按空格分割16进制字符串
进制转换Convert.ToByte以指定进制解析字符串为字节
格式化输出ToString("X2")将字节格式化为两位16进制

第一部分:String → Byte[](字符串转字节数组)

/// <summary> /// 把16进制字符串转换成字节数组 /// </summary> /// <param name="hexString">16进制的字符串,以空格分割,如 "48 65 6C"</param> /// <param name="fromBase">需要转换的进制,默认16</param> public static byte[] HexStringToByte(string hexString, int fromBase = 16) { // 按空格分割字符串:"48 65 6C" → ["48", "65", "6C"] string[] strs = hexString.Split(' '); byte[] result = new byte[strs.Length]; for (int i = 0; i < strs.Length; i++) { // 以fromBase为基底解析字符串,自动处理0x前缀 result[i] = Convert.ToByte("0X" + strs[i], fromBase); } return result; } ​ // 使用示例 byte[] data = HexStringToByte("48 65 6C 6C 6F"); // → [72, 101, 108, 108, 111]

第二部分:Byte[] → String(字节数组转16进制字符串)

/// <summary> /// 把字节数组转换成16进制的字符串,以空格分割 /// </summary> /// <param name="data">字节数组</param> /// <returns>空格分隔的16进制字符串,如 "48 65 6C 6C 6F"</returns> public static string ByteToHexString(byte[] data) { string result = string.Empty; for (int i = 0; i < data.Length; i++) { // X2:两位大写16进制,不足两位前面补0 result += data[i].ToString("X2") + " "; } return result.Trim(); // 去掉末尾多余空格 } ​ // 使用示例 string hex = ByteToHexString(new byte[] { 72, 101, 108, 108, 111 }); // → "48 65 6C 6C 6F"

第三部分:完整可直接使用的Helper类

using System; ​ namespace SerialPortHelper { /// <summary> /// 16进制字符串与字节数组互转工具类 /// 适用于串口通讯、TCP/UDP数据传输、Modbus协议等场景 /// </summary> public static class HexByteConvert { /// <summary> /// 把16进制字符串转换成字节数组 /// </summary> /// <param name="hexString">16进制的字符串,以空格分割,如 "48 65 6C"</param> /// <param name="fromBase">需要转换的进制,默认16</param> /// <returns>字节数组</returns> public static byte[] HexStringToByte(string hexString, int fromBase = 16) { string[] strs = hexString.Split(' '); byte[] result = new byte[strs.Length]; for (int i = 0; i < strs.Length; i++) { result[i] = Convert.ToByte("0X" + strs[i], fromBase); } return result; } ​ /// <summary> /// 把字节数组转换成16进制的字符串,以空格分割 /// </summary> /// <param name="data">字节数组</param> /// <returns>空格分隔的16进制字符串,如 "48 65 6C 6C 6F"</returns> public static string ByteToHexString(byte[] data) { string result = string.Empty; for (int i = 0; i < data.Length; i++) { result += data[i].ToString("X2") + " "; } return result.Trim(); } } }

最后更新:2025-04-28

http://www.jsqmd.com/news/721831/

相关文章:

  • C# 13指针与fixed语句安全红线:5类高危模式、3层编译器防护、1套企业级审计清单
  • VirtualBrowser 2.1.15:一站式浏览器指纹管理实战指南
  • RS_ASIO:终极低延迟音频解决方案,为Rocksmith 2014带来专业级音频体验
  • 暴雨大讲堂|AI算力异构与液冷重塑算力产业新格局
  • 告别Anchor Boxes:手把手带你用PyTorch复现FCOS目标检测模型(附完整代码)
  • 香港启世集团宣布即将发布人工光合作用突破性技术
  • show
  • Ledger 硬件钱包支持币种大全(中国用户参考版)
  • MagiskHide Props Config终极指南:Android设备指纹伪装与安全检测绕过完整方案
  • 告别理论推导!用SH33F2811的SVPWM模块驱动电机,实测波形与代码分享
  • MacType终极指南:3步让Windows字体焕然一新,告别模糊显示!
  • 微软向美国约7%员工提供自愿退休买断计划
  • Winhance中文版终极指南:完全掌握Windows系统优化与管理
  • JSM27712 650V 高低侧栅极驱动芯片
  • DLSS Swapper终极指南:专业级游戏性能优化解决方案
  • 别再为YOLOv8-Pose数据集发愁了!手把手教你用CVAT标注COCO格式关键点(附可视化代码)
  • 你还在用Worker进程模拟并发?PHP 8.9 原生纤维协程已支持调度器热插拔(仅限RC3+内测通道开放)
  • 从调试助手到真实设备:手把手带你完成汇川AM600与第三方仪表的Modbus RTU通信实战
  • 如何用DyberPet桌面宠物框架打造你的专属数字伙伴?3步开启创意之旅
  • 终极色彩管理解决方案:OpenColorIO-Config-ACES快速入门完整指南
  • 脑机接口初创公司Neurable寻求向消费级可穿戴设备授权“读心“技术
  • 【工业级偏见审计手册】:基于R的因果公平性检验、群体差异分解与置信区间校准(附FDA/EC合规模板)
  • 426-opencua tmux
  • 黄金矿工H5游戏源码 | Vue+uni-app挖矿小游戏 | 内置矿机玩法 | 对接广告联盟 提现变现完整项目
  • 关于在网页中使用CSS样式
  • 告别传统FAST:用Superpoint自监督网络,在COCO数据集上实战像素级特征点提取
  • 电赛备赛笔记:用GD32F470的DMA驱动PWM,我踩过的那些坑(梁山派实战)
  • 别再被转接头坑了!电吉他内录无声的终极排查指南(附MOOER效果器连接图)
  • 【光学】㪚斑成像和荧光成像双模态融合Matlab实现
  • PHP 9.0异步DNS解析+TLS 1.3零往返握手+AI机器人上下文感知缓存:三重加速下首字节响应进入17ms时代(独家压力测试原始日志公开)