news 2026/4/29 23:53:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 23:49:55

OpenCore Configurator:黑苹果引导配置的终极图形化解决方案

OpenCore Configurator&#xff1a;黑苹果引导配置的终极图形化解决方案 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator 在非苹果硬件上运行macOS&#xff08…

作者头像 李华
网站建设 2026/4/29 23:47:02

从iPhone到屏下超声波:手机指纹传感器技术演进与选购避坑指南

从iPhone到屏下超声波&#xff1a;手机指纹传感器技术演进与选购避坑指南 在智能手机解锁方式的演进历程中&#xff0c;指纹识别技术始终扮演着关键角色。从2013年iPhone 5S首次引入电容式指纹识别开始&#xff0c;这项技术已经经历了多次迭代升级&#xff0c;如今屏下超声波指…

作者头像 李华
网站建设 2026/4/29 23:44:27

嵌入式学习之Linux操作系统基础

Linux操作系统基础命令&#xff0c;总结一些基础的需要记住的命令一、文件与目录操作1. 目录查看与切换ls # 查看当前目录文件 ls -l # 详细列表&#xff08;权限、大小、时间&#xff09; ls -a # 显示隐藏文件 pwd # 查看当前所在绝对路径 cd 目…

作者头像 李华
网站建设 2026/4/29 23:44:26

三步实现百度文库文档免费保存的终极方案

三步实现百度文库文档免费保存的终极方案 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 还在为百度文库的付费文档和广告弹窗困扰吗&#xff1f;今天我要为你介绍一个简单高效的解决方案——一个…

作者头像 李华