C#16进制与字符串字节数组之间的转换代码
根据给定文件的信息,我们可以总结出以下关于C#中十六进制与字符串、字节数组之间转换的相关知识点: ### C#中十六进制与字符串、字节数组之间的转换 #### 一、概述 在计算机编程中,经常需要进行不同数据格式之间的转换,如十六进制与字符串或字节数组之间的转换。这些转换对于处理网络通信、加密解密算法等场景尤为重要。本篇文章将详细介绍如何在C#中实现十六进制与字符串、字节数组之间的转换,并提供具体的示例代码。 #### 二、知识点详解 ##### 1. 十六进制字符串转字节数组(`strToToHexByte`) 此函数用于将一个十六进制字符串转换为字节数组。该函数首先会移除输入字符串中的所有非十六进制字符,然后检查字符串长度是否为偶数,如果不是,则在末尾添加一个空字符以保证转换正确进行。接着,通过循环遍历字符串并使用`Convert.ToByte`方法将其每两个字符转换为一个字节值,最终形成字节数组。 ```csharp private static byte[] strToToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); // 移除空格 if ((hexString.Length % 2) != 0) hexString += "0"; // 如果长度不是偶数,在末尾补0 byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; } ``` ##### 2. 字节数组转十六进制字符串(`byteToHexStr`) 此函数用于将字节数组转换为十六进制字符串。它遍历每个字节,将其转换为十六进制表示形式,并拼接成一个新的字符串返回。 ```csharp public static string byteToHexStr(byte[] bytes) { string returnStr = ""; if (bytes != null) { for (int i = 0; i < bytes.Length; i++) { returnStr += bytes[i].ToString("X2"); // 将每个字节转换为两位十六进制数 } } return returnStr; } ``` ##### 3. 汉字转十六进制字符串(`ToHex`) 此函数用于将汉字字符串转换为十六进制字符串。函数首先检查输入字符串长度是否为偶数,如果不是,则在末尾添加一个空字符。接着指定字符集(如UTF-8或GB2312),获取相应的编码对象,并将字符串转换为字节数组。遍历字节数组并将其每个元素转换为十六进制字符串,同时可以根据参数选择是否在每个十六进制数之间插入分隔符。 ```csharp public static string ToHex(string s, string charset, bool fenge) { if ((s.Length % 2) != 0) { s += "0"; // 如果长度不是偶数,在末尾补0 } System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset); byte[] bytes = chs.GetBytes(s); string str = ""; for (int i = 0; i < bytes.Length; i++) { str += string.Format("{0:X}", bytes[i]); // 转换为十六进制 if (fenge && (i != bytes.Length - 1)) { str += ","; // 插入分隔符 } } return str.ToLower(); // 返回小写十六进制字符串 } ``` ##### 4. 十六进制字符串转汉字(`UnHex`) 此函数用于将十六进制字符串转换回原始的汉字字符串。首先检查输入的十六进制字符串是否为有效值,移除其中可能存在的空格、换行符等非十六进制字符,并确保其长度为偶数。接着,通过循环将每两个字符转换为一个字节,并构建字节数组。根据指定的字符集将字节数组转换回原始字符串。 ```csharp public static string UnHex(string hex, string charset) { if (hex == null) throw new ArgumentNullException("hex"); hex = hex.Replace(" ", ""); hex = hex.Replace("\n", ""); hex = hex.Replace("/", ""); hex = hex.Replace("", ""); if (hex.Length % 2 != 0) { hex += "20"; // 如果长度不是偶数,在末尾补20 } byte[] bytes = new byte[hex.Length / 2]; for (int i = 0; i < bytes.Length; i++) { try { bytes[i] = byte.Parse(hex.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber); } catch { throw new ArgumentException("hex is not a valid hex number!", "hex"); } } System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset); return chs.GetString(bytes); // 将字节数组转换为字符串 } ``` 以上就是C#中十六进制与字符串、字节数组之间转换的关键知识点及实现代码。通过这些函数,可以方便地完成不同数据格式之间的相互转换。在实际应用中,开发者可以根据具体需求选择合适的函数进行调用。













/// 字符串转16进制字节数组
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
/// <summary>
/// 字节数组转16进制字符串
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static string byteToHexStr(byte[] bytes)
{
string returnStr = "";
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
returnStr += bytes[i].ToString("X2");
}


- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电子科技大学2021年9月《JAVA程序设计》作业考核试题及答案参考17.docx
- 电气CAD系统的研究与开发的开题报告.docx
- 2021年我是接班人网络大课堂观后感范文5篇.doc
- 网络营销分为电子商务.doc
- 人力资源统计报表数据处理系统软件操作指南2009-1-7培训讲学.ppt
- 2016综合机械与自动化项目全国选拔赛技术文件.doc
- 基于单片机的智能语音分类垃圾桶的设计与实现.docx
- 利用excel电子表格制作质量控制图(自动-)ppt课件(1).ppt
- 微机原理与接口技术-第-8-章-并串行通信接口培训资料.ppt
- 管理系统中计算机应用 练习题.doc
- 互联网金融对传统金融业的影响.docx
- 精益生产之自动化ppt课件(1).pptx
- 东北大学2021年9月《计算机网络》作业考核试题及答案参考4.docx
- VisualBasic程序设计课程教学研讨.doc
- -计算机系统概述(1).ppt
- 利用Oracle执行计划机制提高查询性能(1).doc


